웹마스터 팁
flash <=> xe menu 연동
2008.02.03 11:52
프로그래밍 경험이나 기타 등등에서 정말 초보인 제가 팁이라긴 멋하지만,,,
나름 힘들게 ㅠ.ㅠ 알아낸 방법이라 혹시 원하시는분 계시면 도움이 되길 바라는 마음에 올려봅니다.
우선 코드의 모양은 이런 내용이다! 라고 참고만 해주세요. 3일전에 php문장이 어떻게 생긴지 알게되었으며,
코드를 뜯어본지는 다 세어도 10시간이 채 안되니 많이 부족합니다.
고수분께서 도와 주셧으면 감사하겠습니다.
자~ 긴 서론을 지나 본론으로 가겠습니다.
저는 홈페이지라는 것에는 초보입니다. 그래도 본건 있어서 menu를 flash 로 구성해 보려고 했습니다.
이를 위해 xe에서 menu를 flash 로 로드해와야 하는데,
첫번째로, mysql에서 menu table을 읽어 와서 이를 xml파일로 만들고, 이 파일을 flash에서 읽어 들이는 방향으로 접근했습니다.
결론을 말하자면, 네, 실패했습니다 -0- php와 mysql을 연결하는 것은 어렵지 않았습니다. table을 읽어 xml을 만드는것도 간단했지요, 그런데 결정적으론 지금 생각해도 어이없지만, menu table 에 name field 가 이상한 모양으로(언어호환을위한 'ko','jp' 따위) 생겨있어 여기에서 적절한 name을 추출해 낼수 없던것입니다!! 초보적인 제 능력으론 어떻게 해야할지 전혀 알수없는 상태!! 그래서 이방법은 포기했습니다 ㅠ.ㅠ
두번째는, 위에서 php를 공부하며 뒤져보았던 xe의 menu 관련 php코드를 살펴보면서 떠오른 생각입니다.
xe에서 이미 menu를 xml로 관리하고 있음을 발견한 것이죠!!(남들은 쉽게 알걸 힘들게 힘들게 찾은 ㅠ.ㅠ) 이 xml파일을 사용하면 되겠다는 생각이 들었습니다.
이때 또다른 문제점에 부딪쳤는데, menu xml 파일이 menu_srl.xml.php 즉, php로 만들어져 있었던 것이죠. 이를 실행해야, 온전한 xml파일이 생성될수 있기에 또 다시 검색을 통해 방법을 찾아 냈습니다. 간단하게 include 를 이용해서 실행할수 있었습니다. 그리고 이때 stdout 버퍼를 쌓아두고 한번에 출력할수 있는 함수인 ob_get_contents();를 찾아 사용했습니다.
이를 이용해 xml파일은 만들었습니다.
다음으로 xe menu 와의 호환을 위해 이 루틴을 어디다 집어 넣을것인가 인데, modules/menu/menu.admin.controller.php를 보면 makeXmlFile이라는 함수를 볼수 있습니다. 제가 나름 분석해보니, menu table에서 xml buffer 파일을 만들어내는 함수였습니다. 이 함수는 menu가 갱신되면 호출되어 xml파일을 갱신한다는 추측을 했고, 여기에 찾은 루틴을 집어 넣으면 menu가 갱신될때, xml 파일도 갱신될것이라고 생각했습니다.
자 이제 코드를 보아요~
/modules/menu/menu.admin.controller.php
// php 캐시 파일 생성 <<대략 305 line
$php_output = $this->getPhpCacheCode($tree[0], $tree);
$php_buff = sprintf('<?php if(!defined("__ZBXE__")) exit(); $lang_type = Context::getLangType(); %s; $menu->list = array(%s); ?>', $php_output['name'], $php_output['buff']);
//★여기부터
ob_start();
// flash 위한 xml 생성
include ($xml_file);
$print = ob_get_contents();
ob_end_clean();
// 파일 저장
FileHandler::writeFile("menudata.xml",$print);
//★여기까지 7줄 정도를 추가합니다.
FileHandler::writeFile($xml_file, $xml_buff);
FileHandler::writeFile($php_file, $php_buff);
return $xml_file;
}
쉽죠? -0-;; 저기 보이는 menudata.xml 파일은 xe root폴더에 생성될것입니다. 경로 지정해서 쓰시면 될듯합니다.
flash 를 위한 xml파일은 생성되었으니... 이제 누군가가 xml를 parsing해서 flash를 구성하는 파일만 구해주시면 됩니다.
거창하긴 했지만 사실 내용은 별것 없었습니다.. 그럼에도 이렇게 긴~ 글을 쓴것은...
고생한 제가 격려의 말한마디를 받아내기 위한 수작ㅡㅡ; 이었던 것이죠...
투박한 방법이니, 숙련자 분이 생각하시는 깔끔한 방법을 올려주시면 저도 감사히 쓰도록 하겠습니다.
댓글 7
-
자형
2008.02.08 19:15
대단하십니다. ^^
-
고생하셨네요.
그런데 flash 메뉴를 사용할때 굳이 xe 메뉴와 연동할 필요가 있을까요? -
hanyunhu
2008.02.13 11:17
만드시느라 고생하셨네요
^^ -
guny
2008.02.14 14:51
오우...기대 햇던건데...
시도해보고 멘트 달죠...
하여튼 대단합니다. -
해용아이
2008.02.18 10:39
이렇게 열심히 설명해주셨는데 전혀 이해못하고 있는 1人 ㅡ0ㅡ
-
다 영
2008.02.27 14:04
그렇다면...
/modules/menu/menu.admin.controller.php 이곳에 올려주신 7줄의 코드를 삽입한 후에
만들어진 menudata.xml파일을 플래시와 연동하면 되는건가요...??
그런데.. menudata.xml파일도 ko jp 이런게 있어서....
제목 | 글쓴이 | 날짜 |
---|---|---|
bgm 넣을려고 프레임 나눴을때 가로스크롤바 해결방법. [12] | 또리♡485 | 2008.01.25 |
회원그룹별 제한된 서비스 구현을 위한 조건문 [5] | 똑디 | 2008.01.25 |
(모든)*.파일 UTF_8 ↔ EUC-KR
[4]
![]() | Capyou | 2008.01.25 |
불펌소스 ~! [6] | 해피데이1541 | 2008.01.28 |
홈페이지에 예쁜 날씨 배너를 달아보자!!!!
[3]
![]() | blue7376.myid.net | 2008.01.28 |
[수정] webzine 스타일을 이용한 링크게시판 만들기
[5]
![]() | 대암지기 | 2008.01.28 |
좌측 로그인 회원 리스트가 많아지면 스크롤 처리
[6]
![]() | 똑디 | 2008.01.29 |
날씨배너 600종류 입니다.(지역별75종X색상별8종)
![]() | 푸른커튼 | 2008.01.30 |
LI UL OL 이 페이지에서 적용이 안될경우 [1] | 찐빵아저씨 | 2008.01.30 |
flash <=> xe menu 연동 [7] | tsana | 2008.02.03 |
BGM 등을 배경을 투명하게 iframe 으로 넣는 팁 [3] | 푸른커튼 | 2008.02.05 |
왼쪽메뉴줄이고 오른쪽에 박스만들어 내용쉽게넣기
[15]
![]() | plruto | 2008.02.07 |
주소끝에 /zbxe 안적어도 홈페이지에 바로 들어오게 하는법?? [10] | 박태훈922 | 2008.02.07 |
아날로그 플래시 시계 10종류 (홈페이지, 블로그용)
![]() | 푸른커튼 | 2008.02.09 |
로그인후 보여줄 페이지 설정 [4] | 권인해 | 2008.02.11 |
회원가입 생일 필수로 입력받고, 관리자페이지 회원목록에 회원생일 출력하기 [10] | 대암지기 | 2008.02.11 |
제로보드용 플래시시계 위젯 설치방법
![]() | 푸른커튼 | 2008.02.12 |
전에 누군가 찾았던 것인데..새로고침시 현재페이지로 [2] | 강영곤 | 2008.02.14 |
인사말 랜덤추출 스크립트 [xe적용방법] [12] | 라싸 | 2008.02.18 |
[전면수정]회원가입시 기본 정보공개 여부 체크하기(1) 모듈부분 [5] | 대암지기 | 2008.02.20 |
너무 어려워요 잉..ㅎㅎ