웹마스터 팁

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를 구성하는 파일만 구해주시면 됩니다.

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

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

제목 글쓴이 날짜
게시판DX 포인트 설정값이 0인 게시물 경고창 뜨지않도록 꾸링 2014.12.31
구글 접속이 어려운 지역에서 홈페이지 속도 저하 관련 [2] 상해파 2014.12.31
확장변수 정렬 방법 아름다운청년1 2014.12.31
정규식으로 소수 찾기 [4] 신평 2014.12.31
폰갭 alert하기 file 지인에드컴 2015.01.01
게시글을 삭제하면 해당 글 내부에 첨부된 첨부파일이 서버에서 사라지지 않는 버그 수정법 [6] sejin7940 2015.01.05
정렬을 사용자정의값으로 한 경우 저장이 안 되는 현상 수정 [1] sejin7940 2015.01.06
사용자정의 기준 정렬과 사용자정의 검색이 동시에 작동하도록 기능 개선 [2] sejin7940 2015.01.06
사이트 잠금 수동으로 풀기 StyleRoot 2015.01.07
timezone (타임존) 관련한 문제 (SERVER, DBMS, PHP, XE) [2] 세상의모든계산기 2015.01.07
Hostinger(호스팅어) 등 해외 서버에서 XE 설치화면이 깨진다면 [9] file YJSoft 2015.01.11
1.7.9 mp3확장명 통합검색시 다운로드 문제 임시 조취 꾸링 2015.01.13
폰갭 어플 연결시 admob 광고 추가 방법 지인에드컴 2015.01.14
Centos yum을 이용한 매일밤 자동업데이트 ひりゅう. 2015.01.14
추천 웹 디자인, 모바일 디자인, CSS3, UI/UX 애니메이션을 확인할 수 있는 블로그 file 나도모름 2015.01.14
[시니시즘] 비회원에게 파일 다운로드 권한이 없다고 뜰 때 시니시즘 2015.01.15
스팸 단어가 뭔지 스패머들에게 알려주지마세요. 썰레발리오 2015.01.16
파일첨부 컨트롤러에 관하여 (첨부파일이 문자열이나, 인코딩되어있는 이미지 등) [1] 410contents 2015.01.16
문서권한 지정 애드온 1.7에서 동작하게 [2] socialskyo 2015.01.17
포인트 부족 시 글 열람 금지 설정해도, 글을 볼 수 있는 버그 수정 [1] sejin7940 2015.01.18