XE 위젯은 별도의 소스코드없이 페이지를 간단하게 꾸밀 수 있게 하지요..
이 위젯개념이 없었다면 소스코드 짜거나 찾거나 해서 페이지를 꾸며야 겠지요..
예를 들어 로그인 위젯이 없었다면 어떻게 되었을까요?? (이부분을 각자 생각해보도록 합시다..)
이번에는 위젯이 어떠한 원리로 작동하는 지 살펴보도록 하겠습니다..
먼저 위젯은 위젯모듈(./modules/widget)에서 위젯의 모든것을 총괄하고 있습니다..
위젯기능을 간단하게 살펴보면..
위젯설정을 하게 되면, 아래와 같이 위젯코드라는 게 생성됩니다..
<img class="zbxe_widget_output" widget="content" skin="default" colorset="white" content_type="document" list_type="normal" tab_type="none" markup_type="table" page_count="1" option_view="title,regdate,nickname" show_browser_title="Y" show_comment_count="Y" show_trackback_count="Y" show_category="Y" show_icon="Y" order_target="regdate" order_type="desc" thumbnail_type="crop" />
- 이 코드는 이미지태그가 아니라 위젯코드입니다..
- 이 위젯코드는 XE페이지에서만 사용하겠지요.. (그래서 XE페이지 어디서나 위젯코드를 사용할 수 있습니다.)
- XE화면 출력바로전 위젯코드는 실제코드로 변환됩니다.. (위젯모듈에서 'display' 트리거를 통해 출력직전 실제코드로 변환됩니다.)
위젯코드를 자세히 살펴보면 아래와 같습니다.
<img class="zbxe_widget_output" widget="위젯이름" skin="위젯스킨" colorset="스킨 컬러셋" 위젯설정사항 />
이 위젯코드가 실제 HTML 코드로 변환되는 형태로 위젯기능이 동작합니다.
위젯코드가 실제 HTML 코드로 변환 되는 과정!!
- 위젯코드를 분석합니다. (XmlParser 이용)
- 위젯의 클래스파일에서 "proc"함수를 실행시켜 위젯결과 HTML코드를 얻습니다. ("proc"함수 인자로 위젯설정을 받습니다.)
- 위젯스타일이 있으면 위젯결과 HTML코드와 합칩니다.
- 위젯코드를 최종 HTML 코드로 교체!
class 위젯이름 extends WidgetHandler{ function proc($args){ // 위젯스킨 설정 $tpl_file = 'index'; $tpl_path = sprintf('%sskins/%s', $this->widget_path, $args->skin); //컬러셋 지정 Context::set('colorset', $args->colorset); // 템플릿 컴파일 $oTemplate = &TemplateHandler::getInstance(); return $oTemplate->compile($tpl_path, $tpl_file); } }
위젯의 상세한 작동원리를 알게되서 너무 좋습니다. 역시 최고의 강의입니다.
다음강의가 벌써 기다려 지네요 항상 감사드리고 많이 배워 갑니다!