웹마스터 팁

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

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

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

제목 글쓴이 날짜
Windows Server 이벤트 로그 정리하기 StyleRoot 2014.04.20
가비아에서 웹호스팅 관련 팁 [1] JerryKim 2014.04.19
해외 아이피 차단 방법입니다. [3] Flolida 2014.03.01
중국대륙 IP 차단방법 [5] 낮은자 2014.03.07
이전/다음 글버튼 출력 애드온의 버튼을 사이트 밖으로 빼봅시다..^^ [5] file 착한악마 2014.04.03
Windows IIS 에서 F5 연타 방지하기 (mod_evasive , limit_req) [3] file StyleRoot 2014.04.08
XE 업데이트후 갑자기 CSS/JS등이 403 오류가 날때 YJSoft 2014.04.16
<div>에 ajax html 넣기 [3] 웹빌드 2014.04.10
장비 침입 탐지 및 자동 ip 차단 프로그램 소개 [4] 고구마군 2014.04.09
NULL/XMAS 패킷 포트 스캐닝 방지 방안 고구마군 2014.04.12
여러가지 hover effect 모음 [1] 드래그홈 2014.03.26
이모티콘 스킨(?) 이모티콘 팝업 창을 개선합시다 [11] file socialskyo 2013.11.30
사용자에게 파일 내용을 뿌릴땐 fpassthru를 쓰자 [2] DynamicLaser 2014.03.23
관리자를 제외하고는 타회원의 회원정보 보기를 막는 방법 [1] sejin7940 2014.04.04
글쓰기를 클릭하면 띄워지는 테두리 없는 예쁜 팝업 띄우기 core. 1.7.4 [4] file 마음의빈자리 2014.02.11
모바일EX 사용시, 모바일 레벨아이콘 출력하기. [11] qwms 2014.03.29
slidesj 사용시 자동으로 다음 사진 넘길때 웹빌드 2014.04.02
코어 업데이트 후 회원가입 이름이 숫자(번호)로 뜨는 현상 수정 [1] 자대련 2014.04.01
[javascript] 기초강좌 | 02 산술, 대입, 증감, 비교연산자 hiwebs 2014.04.01
[javascript]기초강좌 | 01 자바스크립트개념 hiwebs 2014.04.01