웹마스터 팁

flash <=> xe menu 연동

2008.02.03 11:52

tsana

프로그래밍 경험이나 기타 등등에서 정말 초보인 제가 팁이라긴 멋하지만,,,
나름 힘들게 ㅠ.ㅠ 알아낸 방법이라 혹시 원하시는분 계시면 도움이 되길 바라는 마음에 올려봅니다.

우선 코드의 모양은 이런 내용이다! 라고 참고만 해주세요. 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를 구성하는 파일만 구해주시면 됩니다.

거창하긴 했지만 사실 내용은 별것 없었습니다.. 그럼에도 이렇게 긴~ 글을 쓴것은...
고생한 제가 격려의 말한마디를 받아내기 위한 수작ㅡㅡ; 이었던 것이죠...

투박한 방법이니, 숙련자 분이 생각하시는 깔끔한 방법을 올려주시면 저도 감사히 쓰도록 하겠습니다.

제목 글쓴이 날짜
LI UL OL 이 페이지에서 적용이 안될경우 [1] 찐빵아저씨 2008.01.30
file 업로드 않될때, 메뉴생성및수정이 않될때 [2] plruto 2008.01.31
각 OS별 브라우저별 자신의 웹사이트 보기??? [12] 세바스챤_™ 2008.01.31
리눅스 호환 호스팅에서 zbxe 전체 업로드 후 디렉토리 이동시키기... [4] 소마세월 2008.02.02
flash <=> xe menu 연동 [7] tsana 2008.02.03
본인외 회원정보 제어 [1] edgarkim 2008.02.03
로그인후 보여줄 페이지 설정 [4] 권인해 2008.02.11
드림위버 등에서 레이아웃 편집시에.. [3] 은진아빠 2008.02.12
전에 누군가 찾았던 것인데..새로고침시 현재페이지로 [2] 강영곤 2008.02.14
zbXE User Guide - 3차수정 [3] file 캬캬캬캬캬캬 2008.02.16
[전면수정]회원가입시 기본 정보공개 여부 체크하기(2) 스킨부분 대암지기 2008.02.17
웹표준체크 [4] tsana 2008.02.19
제로보드 XE 0.2.9버젼 업그레이드후 글보기할때 레이아웃 약간깨짐현상이 일어날때... [2] file 카니엘 2008.02.19
[전면수정]회원가입시 기본 정보공개 여부 체크하기(1) 모듈부분 [5] 대암지기 2008.02.20
글을 읽을때 마다 조회수 증가시키기 (0.2.9수정#3) [1] SKYMARU 2008.02.20
잡다한 2차 사용하시는분들 중에 페이지 수정버튼이 클릭안될때.. [6] 수아기 2008.02.22
외부 페이지에서 변수와 값 사용하기(초보) [2] 기범현지아빠 2008.02.22
게시물 목록의 번호를 순서대로 출력 [6] file 지연아빠 2008.02.23
[정식 버전 1.0.0][완결편]회원가입시 기본 정보공개 여부 체크하기(안내) [2] file 대암지기 2008.02.24
[정식 버전 1.0.0][완결편]회원가입시 기본 정보공개 여부 체크하기(1) 모듈부분 [4] 대암지기 2008.02.24