02. 확장변수 출력(extra_vars) 위젯 구현하기

조회 수 981 추천 수 0 2010.11.25 17:51:55
SMaker *.22.160.122
제목 작성자 날짜
02. 확장변수 출력(extra_vars) 위젯 구현하기 (current) SMaker 2010.11.25 17:51:55
복원
<ul class="toc"><li class="toc3"><a href="#h1250494852215">확장변수 출력(extra_vars) 위젯 class 만들기</a></li><li class="toc3"><a href="#h1250495021461">템플릿 파일 작성</a></li></ul><h3 id="h1250494852215">확장변수 출력(extra_vars) 위젯 class 만들기</h3><div class="eArea xe_content xe_dr_txt"><p>documentModel의 인스턴스를 받아 <span style="font-weight: bold;">documentModel::getDocumentList()</span>를 이용해 선택된 게시판의 최근 목록과 <span style="font-weight: bold;">documentModel::getExtraKeys()</span>를 이용해 확장변수 키들을 가져와 알맞게 가공하여 Context::set() 함수로 템플릿에 전달합니다.</p><p>확정변수 출력 위젯은 <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">게시판 확장변수의 키 이름</span></span>과 <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">확장변수 값 목록</span></span>을 구하는 두가지를 구현하면 됩니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?php<br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * @class extra_var<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author sol (sol@ngleader.com)<br>&nbsp;&nbsp;&nbsp;&nbsp; * @brief extar_var를 출력하는 위젯<br>&nbsp;&nbsp;&nbsp;&nbsp; * @version 0.1<br>&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp; class <span style="font-weight: bold;">extra_vars</span> extends <span style="font-weight: bold;">WidgetHandler</span> {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 위젯의 실행 부분<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * ./widgets/위젯/conf/info.xml 에 선언한 extra_vars를 args로 받는다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 결과를 만든후 print가 아니라 return 해주어야 한다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function <span style="font-weight: bold;">proc</span>($args) {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 출력된 목록 수<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $args-&gt;list_count = (int)$args-&gt;list_count;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$args-&gt;list_count) $args-&gt;list_count = 5;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 게시물을 가져옴<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj-&gt;module_srl = $args-&gt;selected_module_srl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj-&gt;list_count = $args-&gt;list_count;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oDocumentModel = &amp;getModel('document');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = $oDocumentModel-&gt;<span style="font-weight: bold;">getDocumentList</span>($obj, true);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$output-&gt;toBool()) return '';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">Context::set('oDocumentItemList',$output-&gt;data);</span></span><br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 확장변수 정보를 가져옴<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_keys = explode(',',$args-&gt;extra_vars_list);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_keys_list = array();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $extra_keys = $oDocumentModel-&gt;<span style="font-weight: bold;">getExtraKeys</span>($module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($extra_keys){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach($extra_keys as $k =&gt; $extra_key){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $i = array_search($extra_key-&gt;eid, $selected_extra_keys);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($i!==false){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_key_list[!$i] = $extra_key;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">Context::set('extra_key_list',$selected_extra_key_list);</span></span><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_path = sprintf('%sskins/%s', $this-&gt;widget_path, $args-&gt;skin);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('colorset', $args-&gt;colorset);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 파일을 지정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_file = 'extra_vars';<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 컴파일하여 html로 return<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oTemplate = &amp;TemplateHandler::getInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $oTemplate-&gt;compile($tpl_path, $tpl_file);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;<br>&nbsp;&nbsp;&nbsp; } &nbsp;<br><br>?&gt;<br><br></p></div><h3 id="h1250495021461">템플릿 파일 작성</h3><div class="eArea xe_content xe_dr_txt"><p>레이아웃이나 모듈스킨을 만들 때와 같은 방법으로 템플릿 문법을 이용하여 작성하면 됩니다.<br></p></div><p><b>extra_vars.html</b></p><div class="eArea xe_content xe_dr_txt"><p>&lt;table&gt;<br>&nbsp;&nbsp;&nbsp; &lt;thead&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach($extra_key_list as $j =&gt; $extra_key)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$extra_key-&gt;name}&lt;/td&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/thead&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tbody&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;!--@foreach($oDocumentItemList as $i =&gt; $oDocument)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;tr&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach($extra_key_list as $j =&gt; $extra_key)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$oDocument-&gt;getExtraEidValue($extra_key-&gt;eid)}&amp;nbsp;&lt;/td&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;/tr&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;&nbsp;&nbsp; &lt;/tbody&gt;<br>&lt;/table&gt;<br></p></div><div class="eArea xe_content xe_dr_txt"><p>Context::set()으로 템플릿에 전달한 extra_key_list와 oDocumentItemList를 받아 html table의 head와 body를 만드는 코드입니다.<br></p></div>
SMaker 2010.11.25 17:44:57
복원
<ul class="toc"><li class="toc3"><a href="#h1250494852215">확장변수 출력(extra_vars) 위젯 class 만들기</a></li><li class="toc3"><a href="#h1250495021461">템플릿 파일 작성</a></li></ul><h3 id="h1250494852215">확장변수 출력(extra_vars) 위젯 class 만들기</h3><div class="eArea xe_content xe_dr_txt"><p>documentModel의 인스턴스를 받아 <span style="font-weight: bold;">documentModel::getDocumentList()</span>를 이용해 선택된 게시판의 최근 목록과 <span style="font-weight: bold;">documentModel::getExtraKeys()</span>를 이용해 확장변수 키들을 가져와 알맞게 가공하여 Context::set() 함수로 템플릿에 전달합니다.</p><p>확정변수 출력 위젯은 <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">게시판 확장변수의 키 이름</span></span>과 <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">확장변수 값 목록</span></span>을 구하는 두가지를 구현하면 됩니다.<br></p></div><div class="eArea xe_content xe_dr_txt eFocus"><p>&lt;?php<br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * @class extra_var<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author sol (sol@ngleader.com)<br>&nbsp;&nbsp;&nbsp;&nbsp; * @brief extar_var를 출력하는 위젯<br>&nbsp;&nbsp;&nbsp;&nbsp; * @version 0.1<br>&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp; class <span style="font-weight: bold;">extra_vars</span> extends <span style="font-weight: bold;">WidgetHandler</span> {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 위젯의 실행 부분<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * ./widgets/위젯/conf/info.xml 에 선언한 extra_vars를 args로 받는다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 결과를 만든후 print가 아니라 return 해주어야 한다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function <span style="font-weight: bold;">proc</span>($args) {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 출력된 목록 수<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $args-&gt;list_count = (int)$args-&gt;list_count;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$args-&gt;list_count) $args-&gt;list_count = 5;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 게시물을 가져옴<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj-&gt;module_srl = $args-&gt;selected_module_srl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj-&gt;list_count = $args-&gt;list_count;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oDocumentModel = &amp;getModel('document');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = $oDocumentModel-&gt;<span style="font-weight: bold;">getDocumentList</span>($obj, true);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$output-&gt;toBool()) return '';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">Context::set('oDocumentItemList',$output-&gt;data);</span></span><br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 확장변수 정보를 가져옴<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_keys = explode(',',$args-&gt;extra_vars_list);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_keys_list = array();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $extra_keys = $oDocumentModel-&gt;<span style="font-weight: bold;">getExtraKeys</span>($module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($extra_keys){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach($extra_keys as $k =&gt; $extra_key){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $i = array_search($extra_key-&gt;eid, $selected_extra_keys);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($i!==false){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_key_list[!$i] = $extra_key;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">Context::set('extra_key_list',$selected_extra_key_list);</span></span><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_path = sprintf('%sskins/%s', $this-&gt;widget_path, $args-&gt;skin);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('colorset', $args-&gt;colorset);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 파일을 지정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_file = 'extra_vars';<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 컴파일하여 html로 return<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oTemplate = &amp;TemplateHandler::getInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $oTemplate-&gt;compile($tpl_path, $tpl_file);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;<br>&nbsp;&nbsp;&nbsp; } &nbsp;<br><br>?&gt;<br><br></p></div><h3 id="h1250495021461">템플릿 파일 작성</h3><div class="eArea xe_content xe_dr_txt"><p>레이아웃이나 모듈스킨을 만들 때와 같은 방법으로 템플릿 문법을 이용하여 작성하면 됩니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;table&gt;<br>&nbsp;&nbsp;&nbsp; &lt;thead&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach($extra_key_list as $j =&gt; $extra_key)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$extra_key-&gt;name}&lt;/td&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/thead&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tbody&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;!--@foreach($oDocumentItemList as $i =&gt; $oDocument)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;tr&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach($extra_key_list as $j =&gt; $extra_key)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$oDocument-&gt;getExtraEidValue($extra_key-&gt;eid)}&amp;nbsp;&lt;/td&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;/tr&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;&nbsp;&nbsp; &lt;/tbody&gt;<br>&lt;/table&gt;<br></p></div><div class="eArea xe_content xe_dr_txt"><p>Context::set()으로 템플릿에 전달한 extra_key_list와 oDocumentItemList를 받아 html table의 head와 body를 만드는 코드입니다.<br></p></div>
SMaker 2010.11.25 17:33:17
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250494852215">확장변수 출력(extra_vars) 위젯 class 만들기</a></li><li class="toc3"><a href="#h1250495021461">템플릿 파일 작성</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250494852215">확장변수 출력(extra_vars) 위젯 class 만들기</h3></div><div class="eArea xe_content xe_dr_txt"><p>documentModel의 인스턴스를 받아 <span style="font-weight: bold;">documentModel::getDocumentList()</span>를 이용해 선택된 게시판의 최근 목록과 <span style="font-weight: bold;">documentModel::getExtraKeys()</span>를 이용해 확장변수 키들을 가져와 알맞게 가공하여 Context::set() 함수로 템플릿에 전달합니다.</p><p>확정변수 출력 위젯은 <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">게시판 확장변수의 키 이름</span></span>과 <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">확장변수 값 목록</span></span>을 구하는 두가지를 구현하면 됩니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?php<br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * @class extra_var<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author sol (sol@ngleader.com)<br>&nbsp;&nbsp;&nbsp;&nbsp; * @brief extar_var를 출력하는 위젯<br>&nbsp;&nbsp;&nbsp;&nbsp; * @version 0.1<br>&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp; class <span style="font-weight: bold;">extra_vars</span> extends <span style="font-weight: bold;">WidgetHandler</span> {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 위젯의 실행 부분<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * ./widgets/위젯/conf/info.xml 에 선언한 extra_vars를 args로 받는다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 결과를 만든후 print가 아니라 return 해주어야 한다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function <span style="font-weight: bold;">proc</span>($args) {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 출력된 목록 수<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $args-&gt;list_count = (int)$args-&gt;list_count;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$args-&gt;list_count) $args-&gt;list_count = 5;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 게시물을 가져옴<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj-&gt;module_srl = $args-&gt;selected_module_srl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj-&gt;list_count = $args-&gt;list_count;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oDocumentModel = &amp;getModel('document');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = $oDocumentModel-&gt;<span style="font-weight: bold;">getDocumentList</span>($obj, true);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$output-&gt;toBool()) return '';<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">Context::set('oDocumentItemList',$output-&gt;data);</span></span><br><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 확장변수 정보를 가져옴<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_keys = explode(',',$args-&gt;extra_vars_list);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_keys_list = array();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $extra_keys = $oDocumentModel-&gt;<span style="font-weight: bold;">getExtraKeys</span>($module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($extra_keys){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach($extra_keys as $k =&gt; $extra_key){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $i = array_search($extra_key-&gt;eid, $selected_extra_keys);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($i!==false){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_key_list[$i] = $extra_key;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">Context::set('extra_key_list',$selected_extra_key_list);</span></span><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_path = sprintf('%sskins/%s', $this-&gt;widget_path, $args-&gt;skin);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('colorset', $args-&gt;colorset);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 파일을 지정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_file = 'extra_vars';<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 컴파일하여 html로 return<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oTemplate = &amp;TemplateHandler::getInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $oTemplate-&gt;compile($tpl_path, $tpl_file);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; } &nbsp;<br>&nbsp;&nbsp;&nbsp; } &nbsp;<br><br>?&gt;<br><br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250495021461">템플릿 파일 작성</h3></div><div class="eArea xe_content xe_dr_txt"><p>레이아웃이나 모듈스킨을 만들 때와 같은 방법으로 템플릿 문법을 이용하여 작성하면 됩니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;table&gt;<br>&nbsp;&nbsp;&nbsp; &lt;thead&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach($extra_key_list as $j =&gt; $extra_key)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$extra_key-&gt;name}&lt;/td&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/thead&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tbody&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;!--@foreach($oDocumentItemList as $i =&gt; $oDocument)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;tr&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach($extra_key_list as $j =&gt; $extra_key)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$oDocument-&gt;getExtraEidValue($extra_key-&gt;eid)}&amp;nbsp;&lt;/td&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;/tr&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;&nbsp;&nbsp; &lt;/tbody&gt;<br>&lt;/table&gt;<br></p></div><div class="eArea xe_content xe_dr_txt"><p>Context::set()으로 템플릿에 전달한 extra_key_list와 oDocumentItemList를 받아 html table의 head와 body를 만드는 코드입니다.<br></p></div>
sol 2010.11.25 12:35:15
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250494852215">확장변수 출력(extra_vars) 위젯 class 만들기</a></li><li class="toc3"><a href="#h1250495021461">템플릿 파일 작성</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250494852215">확장변수 출력(extra_vars) 위젯 class 만들기</h3></div><div class="eArea xe_content xe_dr_txt"><p>documentModel의 인스턴스를 받아 선택된 게시판의 최근 목록과 확장변수 키들도 가공하여 Context::set() 함수로 템플릿에 전달합니다.</p><p>확정변수 출력 위젯은 <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">게시판 확장변수의 키 이름</span></span>과 <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">확장변수 값 목록</span></span>을 구하는 두가지를 구현하면 됩니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?php<br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * @class extra_var<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author sol (sol@ngleader.com)<br>&nbsp;&nbsp;&nbsp;&nbsp; * @brief extar_var를 출력하는 위젯<br>&nbsp;&nbsp;&nbsp;&nbsp; * @version 0.1<br>&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp; class extra_vars extends WidgetHandler {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 위젯의 실행 부분<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * ./widgets/위젯/conf/info.xml 에 선언한 extra_vars를 args로 받는다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 결과를 만든후 print가 아니라 return 해주어야 한다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function proc($args) {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 출력된 목록 수<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $args-&gt;list_count = (int)$args-&gt;list_count;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$args-&gt;list_count) $args-&gt;list_count = 5;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// 게시물을 가져옴</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj-&gt;module_srl = $args-&gt;selected_module_srl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj-&gt;list_count = $args-&gt;list_count;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oDocumentModel = &amp;getModel('document');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = $oDocumentModel-&gt;getDocumentList($obj, true);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$output-&gt;toBool()) return ''; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('+
'+
'oDocumentItemList',$output-&gt;data);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// 확장변수 정보를 가져옴</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_keys = explode('+
',',$args-&gt;extra_vars_list);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_keys_list = array();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $extra_keys = $oDocumentModel-&gt;getExtraKeys($module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($extra_keys){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach($extra_keys as $k =&gt; $extra_key){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $i = array_search($extra_key-&gt;eid, $selected_extra_keys);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($i!==false){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_key_list[$i] = $extra_key;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('extra_key_list',$selected_extra_key_list);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_path = sprintf('%sskins/%s', $this-&gt;widget_path, $args-&gt;skin);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('colorset'+
', $args-&gt;colorset);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 파일을 지정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_file = 'extra_vars';<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 컴파일하여 html로 return<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oTemplate = &amp;TemplateHandler::getInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $oTemplate-&gt;compile($tpl_path, $tpl_file);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br><br>?&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250495021461">템플릿 파일 작성</h3></div><div class="eArea xe_content xe_dr_txt"><p>레이아웃이나 모듈스킨을 만들때와 같은 방법으로 만들면 됩니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;table&gt;<br>&nbsp;&nbsp;&nbsp; &lt;thead&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach($extra_key_list as $j =&gt; $extra_key)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$extra_key-&gt;name}&lt;/td&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/thead&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tbody&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;!--@foreach($oDocumentItemList as $i =&gt; $oDocument)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;tr&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach($extra_key_list as $j =&gt; $extra_key)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$oDocument-&gt;getExtraEidValue($extra_key-&gt;eid)}&amp;nbsp;&lt;/td&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;/tr&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;&nbsp;&nbsp; &lt;/tbody&gt;<br>&lt;/table&gt;<br></p></div><div class="eArea xe_content xe_dr_txt"><p>Context::set()으로 템플릿에 전달한 extra_key_list와 oDocumentItemList를 받아 html table의 head와 body를 만드는 코드입니다.<br></p></div>
sol 2009.08.17 16:57:13
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250494852215">확장변수 출력(extra_vars) 위젯 class 만들기</a></li><li class="toc3"><a href="#h1250495021461">템플릿 파일 작성</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250494852215">확장변수 출력(extra_vars) 위젯 class 만들기</h3></div><div class="eArea xe_content xe_dr_txt"><p>documentModel의 인스턴스를 받아 선택된 게시판의 최근 목록과 확장변수 키들도 가공하여 Context::set() 함수로 템플릿에 전달합니다.</p><p>확정변수 출력 위젯은 <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">게시판 확장변수의 키 이름</span></span>과 <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">확장변수 값 목록</span></span>을 구하는 두가지를 구현하면 됩니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?php<br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * @class extra_var<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author sol (sol@ngleader.com)<br>&nbsp;&nbsp;&nbsp;&nbsp; * @brief extar_var를 출력하는 위젯<br>&nbsp;&nbsp;&nbsp;&nbsp; * @version 0.1<br>&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp; class extra_vars extends WidgetHandler {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 위젯의 실행 부분<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * ./widgets/위젯/conf/info.xml 에 선언한 extra_vars를 args로 받는다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 결과를 만든후 print가 아니라 return 해주어야 한다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function proc($args) {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 출력된 목록 수<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $args-&gt;list_count = (int)$args-&gt;list_count;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$args-&gt;list_count) $args-&gt;list_count = 5;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// 게시물을 가져옴</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj-&gt;module_srl = $args-&gt;selected_module_srl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj-&gt;list_count = $args-&gt;list_count;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oDocumentModel = &amp;getModel('document');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = $oDocumentModel-&gt;getDocumentList($obj, true);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$output-&gt;toBool()) return ''; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('+
'+
'oDocumentItemList',$output-&gt;data);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// 확장변수 정보를 가져옴</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_keys = explode('+
',',$args-&gt;extra_vars_list);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_keys_list = array();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $extra_keys = $oDocumentModel-&gt;getExtraKeys($module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($extra_keys){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach($extra_keys as $k =&gt; $extra_key){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $i = array_search($extra_key-&gt;eid, $selected_extra_keys);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($i!==false){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_key_list[$i] = $extra_key;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('extra_key_list',$selected_extra_key_list);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_path = sprintf('%sskins/%s', $this-&gt;widget_path, $args-&gt;skin);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('colorset'+
', $args-&gt;colorset);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 파일을 지정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_file = 'extra_vars';<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 컴파일하여 html로 return<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oTemplate = &amp;TemplateHandler::getInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $oTemplate-&gt;compile($tpl_path, $tpl_file);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br><br>?&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250495021461">템플릿 파일 작성</h3></div><div class="eArea xe_content xe_dr_txt"><p>레이아웃이나 모듈스킨을 만들때와 같은 방법으로 만들면 됩니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;table&gt;<br>&nbsp;&nbsp;&nbsp; &lt;thead&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach($extra_key_list as $j =&gt; $extra_key)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$extra_key-&gt;name}&lt;/td&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/thead&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tbody&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;!--@foreach($oDocumentItemList as $i =&gt; $oDocument)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;tr&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach($extra_key_list as $j =&gt; $extra_key)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$oDocument-&gt;getExtraEidValue($extra_key-&gt;eid)}&amp;nbsp;&lt;/td&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;/tr&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;&nbsp;&nbsp; &lt;/tbody&gt;<br>&lt;/table&gt;<br></p></div><div class="eArea xe_content xe_dr_txt"><p>Context::set()으로 템플릿에 전달한 extra_key_list와 oDocumentItemList를 받아 html table의 head와 body를 만드는 코드입니다.<br></p></div>
sol 2009.08.17 16:56:01
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250494852215">확장변수 출력(extra_vars) 위젯 class 만들기</a></li><li class="toc3"><a href="#h1250495021461">템플릿 파일 작성</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250494852215">확장변수 출력(extra_vars) 위젯 class 만들기</h3></div><div class="eArea xe_content xe_dr_txt"><p>documentModel의 인스턴스를 받아 선택된 게시판의 최근 목록과 확장변수 키들도 가공하여 Context::set() 함수로 템플릿에 전달합니다.</p><p>확정변수 출력 위젯은 <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">게시판 확장변수의 키 이름</span></span>과 <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">확장변수 값 목록</span></span>을 구하는 두가지를 구현하면 됩니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?php<br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * @class extra_var<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author sol (sol@ngleader.com)<br>&nbsp;&nbsp;&nbsp;&nbsp; * @brief extar_var를 출력하는 위젯<br>&nbsp;&nbsp;&nbsp;&nbsp; * @version 0.1<br>&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp; class extra_vars extends WidgetHandler {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 위젯의 실행 부분<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * ./widgets/위젯/conf/info.xml 에 선언한 extra_vars를 args로 받는다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 결과를 만든후 print가 아니라 return 해주어야 한다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function proc($args) {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 출력된 목록 수<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $args-&gt;list_count = (int)$args-&gt;list_count;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$args-&gt;list_count) $args-&gt;list_count = 5;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// 게시물을 가져옴</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj-&gt;module_srl = $args-&gt;selected_module_srl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj-&gt;list_count = $args-&gt;list_count;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oDocumentModel = &amp;getModel('document');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = $oDocumentModel-&gt;getDocumentList($obj, true);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$output-&gt;toBool()) return ''; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('+
'+
'oDocumentItemList',$output-&gt;data);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// 확장변수 정보를 가져옴</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_keys = explode('+
',',$args-&gt;extra_vars_list);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_keys_list = array();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $extra_keys = $oDocumentModel-&gt;getExtraKeys($module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($extra_keys){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach($extra_keys as $k =&gt; $extra_key){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $i = array_search($extra_key-&gt;eid, $selected_extra_keys);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($i!==false){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_key_list[$i] = $extra_key;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('extra_key_list',$selected_extra_key_list);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_path = sprintf('%sskins/%s', $this-&gt;widget_path, $args-&gt;skin);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('colorset'+
', $args-&gt;colorset);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 파일을 지정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_file = 'extra_vars';<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 컴파일<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oTemplate = &amp;TemplateHandler::getInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $oTemplate-&gt;compile($tpl_path, $tpl_file);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br><br>?&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250495021461">템플릿 파일 작성</h3></div><div class="eArea xe_content xe_dr_txt"><p>레이아웃이나 모듈스킨을 만들때와 같은 방법으로 만들면 됩니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;table&gt;<br>&nbsp;&nbsp;&nbsp; &lt;thead&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach($extra_key_list as $j =&gt; $extra_key)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$extra_key-&gt;name}&lt;/td&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/thead&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tbody&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;!--@foreach($oDocumentItemList as $i =&gt; $oDocument)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;tr&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach($extra_key_list as $j =&gt; $extra_key)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$oDocument-&gt;getExtraEidValue($extra_key-&gt;eid)}&amp;nbsp;&lt;/td&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;/tr&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;&nbsp;&nbsp; &lt;/tbody&gt;<br>&lt;/table&gt;<br></p></div><div class="eArea xe_content xe_dr_txt"><p>Context::set()으로 템플릿에 전달한 extra_key_list와 oDocumentItemList를 받아 html table의 head와 body를 만드는 코드입니다.<br></p></div>
sol 2009.08.17 16:54:56
복원
<div class="eArea xe_content xe_dr_index"><ul class="toc"><li class="toc3"><a href="#h1250494852215">확장변수 출력(extra_vars) 위젯 class 만들기</a></li><li class="toc3"><a href="#h1250495021461">템플릿 파일 작성</a></li></ul></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250494852215">확장변수 출력(extra_vars) 위젯 class 만들기</h3></div><div class="eArea xe_content xe_dr_txt"><p>documentModel의 인스턴스를 받아 선택된 게시판의 최근 목록과 확장변수 키들도 정리를 가져와서 Context::set() 함수로 템플릿에 전달합니다.</p><p>확정변수 출력 위젯은 <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">게시판 확장변수의 라벨(이름)</span></span>과 <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">확장변수 값</span></span>을 구하는 두가지를 구현하면 됩니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?php<br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * @class extra_var<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author sol (sol@ngleader.com)<br>&nbsp;&nbsp;&nbsp;&nbsp; * @brief extar_var를 출력하는 위젯<br>&nbsp;&nbsp;&nbsp;&nbsp; * @version 0.1<br>&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp; class extra_vars extends WidgetHandler {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 위젯의 실행 부분<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * ./widgets/위젯/conf/info.xml 에 선언한 extra_vars를 args로 받는다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 결과를 만든후 print가 아니라 return 해주어야 한다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function proc($args) {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 출력된 목록 수<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $args-&gt;list_count = (int)$args-&gt;list_count;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$args-&gt;list_count) $args-&gt;list_count = 5;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// 게시물을 가져옴</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj-&gt;module_srl = $args-&gt;selected_module_srl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj-&gt;list_count = $args-&gt;list_count;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oDocumentModel = &amp;getModel('document');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = $oDocumentModel-&gt;getDocumentList($obj, true);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$output-&gt;toBool()) return ''; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('oDocumentItemList',$output-&gt;data);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// 확장변수 정보를 가져옴</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_keys = explode(',',$args-&gt;extra_vars_list);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_keys_list = array();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $extra_keys = $oDocumentModel-&gt;getExtraKeys($module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($extra_keys){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach($extra_keys as $k =&gt; $extra_key){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $i = array_search($extra_key-&gt;eid, $selected_extra_keys);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($i!==false){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_key_list[$i] = $extra_key;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('extra_key_list',$selected_extra_key_list);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_path = sprintf('%sskins/%s', $this-&gt;widget_path, $args-&gt;skin);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('colorset', $args-&gt;colorset);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 파일을 지정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_file = 'extra_vars';<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 컴파일<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oTemplate = &amp;TemplateHandler::getInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $oTemplate-&gt;compile($tpl_path, $tpl_file);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br><br>?&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250495021461">템플릿 파일 작성</h3></div><div class="eArea xe_content xe_dr_txt"><p>레이아웃이나 모듈스킨을 만들때와 같은 방법으로 만들면 됩니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;table&gt;<br>&nbsp;&nbsp;&nbsp; &lt;thead&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach($extra_key_list as $j =&gt; $extra_key)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$extra_key-&gt;name}&lt;/td&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/thead&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tbody&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;!--@foreach($oDocumentItemList as $i =&gt; $oDocument)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;tr&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach($extra_key_list as $j =&gt; $extra_key)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$oDocument-&gt;getExtraEidValue($extra_key-&gt;eid)}&amp;nbsp;&lt;/td&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;/tr&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;&nbsp;&nbsp; &lt;/tbody&gt;<br>&lt;/table&gt;<br></p></div><div class="eArea xe_content xe_dr_txt"><p>Context::set()으로 템플릿에 전달한 extra_key_list와 oDocumentItemList를 받아 html table의 head와 body를 만드는 코드입니다.<br></p></div>
sol 2009.08.17 16:53:43
복원
<div class="eArea xe_content xe_dr_hx"><h3 id="h1250494852215">확장변수 출력(extra_vars) 위젯 class 만들기</h3></div><div class="eArea xe_content xe_dr_txt"><p>documentModel의 인스턴스를 받아 선택된 게시판의 최근 목록과 확장변수 키들도 정리를 가져와서 Context::set() 함수로 템플릿에 전달합니다.</p><p>확정변수 출력 위젯은 <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">게시판 확장변수의 라벨(이름)</span></span>과 <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">확장변수 값</span></span>을 구하는 두가지를 구현하면 됩니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?php<br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * @class extra_var<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author sol (sol@ngleader.com)<br>&nbsp;&nbsp;&nbsp;&nbsp; * @brief extar_var를 출력하는 위젯<br>&nbsp;&nbsp;&nbsp;&nbsp; * @version 0.1<br>&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp; class extra_vars extends WidgetHandler {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 위젯의 실행 부분<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * ./widgets/위젯/conf/info.xml 에 선언한 extra_vars를 args로 받는다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 결과를 만든후 print가 아니라 return 해주어야 한다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function proc($args) {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 출력된 목록 수<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $args-&gt;list_count = (int)$args-&gt;list_count;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$args-&gt;list_count) $args-&gt;list_count = 5;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// 게시물을 가져옴</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj-&gt;module_srl = $args-&gt;selected_module_srl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj-&gt;list_count = $args-&gt;list_count;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oDocumentModel = &amp;getModel('document');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = $oDocumentModel-&gt;getDocumentList($obj, true);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$output-&gt;toBool()) return ''; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('oDocumentItemList',$output-&gt;data);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// 확장변수 정보를 가져옴</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_keys = explode(',',$args-&gt;extra_vars_list);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_keys_list = array();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $extra_keys = $oDocumentModel-&gt;getExtraKeys($module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($extra_keys){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach($extra_keys as $k =&gt; $extra_key){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $i = array_search($extra_key-&gt;eid, $selected_extra_keys);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($i!==false){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_key_list[$i] = $extra_key;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('extra_key_list',$selected_extra_key_list);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_path = sprintf('%sskins/%s', $this-&gt;widget_path, $args-&gt;skin);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('colorset', $args-&gt;colorset);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 파일을 지정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_file = 'extra_vars';<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 컴파일<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oTemplate = &amp;TemplateHandler::getInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $oTemplate-&gt;compile($tpl_path, $tpl_file);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br><br>?&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250495021461">템플릿 파일 작성</h3></div><div class="eArea xe_content xe_dr_txt"><p>레이아웃이나 모듈스킨을 만들때와 같은 방법으로 만들면 됩니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;table&gt;<br>&nbsp;&nbsp;&nbsp; &lt;thead&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach($extra_key_list as $j =&gt; $extra_key)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$extra_key-&gt;name}&lt;/td&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/thead&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tbody&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;!--@foreach($oDocumentItemList as $i =&gt; $oDocument)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;tr&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach($extra_key_list as $j =&gt; $extra_key)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$oDocument-&gt;getExtraEidValue($extra_key-&gt;eid)}&amp;nbsp;&lt;/td&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;/tr&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;&nbsp;&nbsp; &lt;/tbody&gt;<br>&lt;/table&gt;<br></p></div><div class="eArea xe_content xe_dr_txt"><p>Context::set()으로 템플릿에 전달한 extra_key_list와 oDocumentItemList를 받아 html table의 head와 body를 만드는 코드입니다.<br></p></div>
sol 2009.08.17 16:53:20
복원
<div class="eArea xe_content xe_dr_hx"><h3 id="h1250494852215">확장변수 출력(extra_vars) 위젯 class 만들기</h3></div><div class="eArea xe_content xe_dr_txt"><p>documentModel의 인스턴스를 받아 선택된 게시판의 최근 목록과 확장변수 키들도 정리를 가져와서 Context::set() 함수로 템플릿에 전달합니다.</p><p>확정변수 출력 위젯은 <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">게시판 확장변수의 라벨(이름)</span></span>과 <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">확장변수 값</span></span>을 구하는 두가지를 구현하면 됩니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?php<br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * @class extra_var<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author sol (sol@ngleader.com)<br>&nbsp;&nbsp;&nbsp;&nbsp; * @brief extar_var를 출력하는 위젯<br>&nbsp;&nbsp;&nbsp;&nbsp; * @version 0.1<br>&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp; class extra_vars extends WidgetHandler {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 위젯의 실행 부분<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * ./widgets/위젯/conf/info.xml 에 선언한 extra_vars를 args로 받는다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 결과를 만든후 print가 아니라 return 해주어야 한다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function proc($args) {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 출력된 목록 수<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $args-&gt;list_count = (int)$args-&gt;list_count;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$args-&gt;list_count) $args-&gt;list_count = 5;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// 게시물을 가져옴</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj-&gt;module_srl = $args-&gt;selected_module_srl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj-&gt;list_count = $args-&gt;list_count;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oDocumentModel = &amp;getModel('document');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = $oDocumentModel-&gt;getDocumentList($obj, true);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$output-&gt;toBool()) return ''; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('oDocumentItemList',$output-&gt;data);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// 확장변수 정보를 가져옴</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_keys = explode(',',$args-&gt;extra_vars_list);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_keys_list = array();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $extra_keys = $oDocumentModel-&gt;getExtraKeys($module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($extra_keys){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach($extra_keys as $k =&gt; $extra_key){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $i = array_search($extra_key-&gt;eid, $selected_extra_keys);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($i!==false){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_key_list[$i] = $extra_key;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('extra_key_list',$selected_extra_key_list);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_path = sprintf('%sskins/%s', $this-&gt;widget_path, $args-&gt;skin);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('colorset', $args-&gt;colorset);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 파일을 지정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_file = 'extra_vars';<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 컴파일<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oTemplate = &amp;TemplateHandler::getInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $oTemplate-&gt;compile($tpl_path, $tpl_file);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br><br>?&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250495021461">템플릿 파일 작성</h3></div><div class="eArea xe_content xe_dr_txt"><p>레이아웃이나 모듈스킨을 만들때와 같은 방법으로 만들면 됩니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;table&gt;<br>&nbsp;&nbsp;&nbsp; &lt;thead&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach($extra_key_list as $j =&gt; $extra_key)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$extra_key-&gt;name}&lt;/td&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/thead&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tbody&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;!--@foreach($oDocumentItemList as $i =&gt; $oDocument)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;tr&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach($extra_key_list as $j =&gt; $extra_key)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$oDocument-&gt;getExtraEidValue($extra_key-&gt;eid)}&amp;nbsp;&lt;/td&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;/tr&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;&nbsp;&nbsp; &lt;/tbody&gt;<br>&lt;/table&gt;<br></p></div><div class="eArea xe_content xe_dr_txt"><p>Context::set()으로 템플릿에 전달한 extra_key_list와 oDocumentItemList를 받아 html table의 head와 body를 만드는 코드입니다.<br></p></div>
sol 2009.08.17 16:50:26
복원
<div class="eArea xe_content xe_dr_hx"><h3 id="h1250494852215">확장변수 출력(extra_vars) 위젯 class 만들기</h3></div><div class="eArea xe_content xe_dr_txt"><p>documentModel의 인스턴스를 받아 선택된 게시판의 최근 목록과 확장변수 키들도 정리를 가져와서 Context::set() 함수로 템플릿에 전달합니다.</p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;?php<br>&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp; * @class extra_var<br>&nbsp;&nbsp;&nbsp;&nbsp; * @author sol (sol@ngleader.com)<br>&nbsp;&nbsp;&nbsp;&nbsp; * @brief extar_var를 출력하는 위젯<br>&nbsp;&nbsp;&nbsp;&nbsp; * @version 0.1<br>&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br>&nbsp;&nbsp;&nbsp; class extra_vars extends WidgetHandler {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /**<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * @brief 위젯의 실행 부분<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; *<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * ./widgets/위젯/conf/info.xml 에 선언한 extra_vars를 args로 받는다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; * 결과를 만든후 print가 아니라 return 해주어야 한다<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; **/<br><br></p><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function proc($args) {<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 출력된 목록 수<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $args-&gt;list_count = (int)$args-&gt;list_count;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$args-&gt;list_count) $args-&gt;list_count = 5;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// 게시물을 가져옴</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj-&gt;module_srl = $args-&gt;selected_module_srl;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $obj-&gt;list_count = $args-&gt;list_count;<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oDocumentModel = &amp;getModel('document');<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $output = $oDocumentModel-&gt;getDocumentList($obj, true);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(!$output-&gt;toBool()) return ''; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('oDocumentItemList',$output-&gt;data);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">// 확장변수 정보를 가져옴</span></span><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_keys = explode(',',$args-&gt;extra_vars_list);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_keys_list = array();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $extra_keys = $oDocumentModel-&gt;getExtraKeys($module_srl);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($extra_keys){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; foreach($extra_keys as $k =&gt; $extra_key){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $i = array_search($extra_key-&gt;eid, $selected_extra_keys);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if($i!==false){<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $selected_extra_key_list[$i] = $extra_key;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('extra_key_list',$selected_extra_key_list);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿의 스킨 경로를 지정 (skin, colorset에 따른 값을 설정)<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_path = sprintf('%sskins/%s', $this-&gt;widget_path, $args-&gt;skin);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Context::set('colorset', $args-&gt;colorset);<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 파일을 지정<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $tpl_file = 'extra_vars';<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 템플릿 컴파일<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $oTemplate = &amp;TemplateHandler::getInstance();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return $oTemplate-&gt;compile($tpl_path, $tpl_file);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br>&nbsp;&nbsp;&nbsp; }&nbsp;&nbsp; <br><br>?&gt;<br></p></div><div class="eArea xe_content xe_dr_hx"><h3 id="h1250495021461">템플릿 파일 작성</h3></div><div class="eArea xe_content xe_dr_txt"><p>레이아웃이나 모듈스킨을 만들때와 같은 방법으로 만들면 됩니다.<br></p></div><div class="eArea xe_content xe_dr_txt"><p>&lt;table&gt;<br>&nbsp;&nbsp;&nbsp; &lt;thead&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tr&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach($extra_key_list as $j =&gt; $extra_key)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$extra_key-&gt;name}&lt;/td&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;&nbsp;&nbsp; &lt;/tr&gt;<br>&nbsp;&nbsp;&nbsp; &lt;/thead&gt;<br>&nbsp;&nbsp;&nbsp; &lt;tbody&gt;<br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;!--@foreach($oDocumentItemList as $i =&gt; $oDocument)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;tr&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@foreach($extra_key_list as $j =&gt; $extra_key)--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;td&gt;{$oDocument-&gt;getExtraEidValue($extra_key-&gt;eid)}&amp;nbsp;&lt;/td&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;/tr&gt;</span></span><br><span style="background-color: rgb(225, 225, 225);"><span style="background-color: rgb(225, 225, 225);">&nbsp;&nbsp;&nbsp; &lt;!--@end--&gt;</span></span><br>&nbsp;&nbsp;&nbsp; &lt;/tbody&gt;<br>&lt;/table&gt;<br></p></div><div class="eArea xe_content xe_dr_txt"><p>Context::set()으로 템플릿에 전달한 extra_key_list와 oDocumentItemList를 받아 html table의 head와 body를 만드는 코드입니다.<br></p></div>
sol 2009.08.17 16:47:20