묻고답하기
최근 게시물 위젯에 확장변수 표시방법 질문 (Tip으로 실패)
2010.01.20 12:34
메인화면 최근게시물 위젯에 확장변수를 표시하고 싶습니다.
그동안 Tip을 보고 여러가지로 시도해 보았으나 나타나지 않았으며 지식인에도 질문해 봐도 답변이 없어 다시 질문을 드립니다.
제가 참고한 XE공식홈페이지의 Tip입니다만 모두 실패 하였습니다.
jsuimage님의
모든 원하는 확장변수를 선택해서 최근게시물 위젯에 나타내기 간단팁
http://www.xpressengine.com/18381084
bibi님의
확장변수를 위젯에서 출력하기
http://www.xpressengine.com/18158657
저의 게시판의 확장변수 설정입니다.
메인화면의 최근게시물 위젯입니다.
Date라는 곳에 확장변수인 shotdate가 표시되게 하고 싶습니다.
콘텐츠위젯 스킨은 나라디자인 스킨이며 테이블 형식으로 출력하고 있습니다.
{$oDocument->getExtraValue(1)}
{$oDocument->extra_value_1}
{$Document->getExtraValue(1)}
{$Document->extra_value_1}
{$item->getExtraValue(1)}
등 다 사용해 봤으나 화면에 변수의 내용이 나타나지 않습니다.
아래 10번째줄에 표시하는 곳이 있습니다.
어떻게 수정해야 할까요?
<td class="time">Date<span class="date"><strong>{$item->getExtraValue(1)}</strong></span></td>
<!--// 테이블형 출력 -->
<!--@else-->
<table class="ncwList" border="1" cellspacing="0">
<tbody>
{@$_idx=0}
<!--@foreach($widget_info->content_items as $key => $item)-->
<tr<!--@if($_idx >= $widget_info->list_count)--> style="display:none"<!--@end-->>
<!--@foreach($widget_info->option_view_arr as $k => $v)-->
<!--@if($v=='shotdate')-->
<td class="time">Date<span class="date"><strong>{$item->getExtraValue(1)}</strong></span></td>
<!--@else if($v=='title')-->
<td class="titleArea">
<!--@if($widget_info->show_browser_title=='+
'+
'Y' && $item->getBrowserTitle())-->
<a href="./<domain">!--@if($item->contents_link)-->{$item->contents_link}<!--@else-->{getSiteUrl("http://www.xpressengine.com/$item->domain,', 'mid', $item->get('mid'))}<!--@end-->" class="moduleTitle">{$item->getBrowserTitle()}</a>
<!--@end-->
<!--@if($widget_info->show_category=='Y' && $item->get('category_srl') )-->
<a href="./{getSiteUrl($item->domain,",'mid',$item->get('mid'),'category',$item->get('category_srl'))}" class="categoryTitle">{$item->getCategory()}</a>
<!--@end-->
<a href="./{$item->getLink()}" class="documentTitle">{$item->getTitle($widget_info->subject_cut_size)}</a>
<!--@if($widget_info->show_comment_count=='Y' && $item->getCommentCount())-->
<sup class="replyNum" title="Replies"><a href="./{$item->getLink()}#comment">{$item->getCommentCount()}</a></sup>
<!--@end-->
<!--@if($widget_info->show_trackback_count=='Y' && $item->getTrackbackCount())-->
<sup class="trackbackNum" title="Trackbacks"><a href="./{$item->getLink()}#trackback">{$item->getTrackbackCount()}</a></sup>
<!--@end-->
<!--@if($widget_info->show_icon=='Y')-->
<span class="icon">{$item->printExtraImages()}</span>
<!--@end-->
</td>
<!--@else if($v=='username')-->
<td><span class="author">{$item->getUserName()}</span></td>
<!--@else if($v=='regdate')-->
<td class="time"><span class="date">{$item->getRegdate("Y-m-d")}</span> <span class="hour">{$item->getRegdate("H:i")}</span></td>
<!--@end-->
<!--@end-->
</tr>
{@$_idx++}
<!--@end-->
</tbody>
</table>
<!--@if($widget_info->page_count > 1 && $widget_info->list_count<$_idx)-->
<ul class="ncwListPagination">
<li><button type="button" class="prev" title="{$lang->cmd_prev}" onclick="content_widget_prev(jQuery(this).parents('ul.ncwListPagination').prev('table.ncwList'+
'),{$widget_info->list_count})"><span>{$lang->cmd_prev}</span></button></li>
<li><button type="button" class="next" title="{$lang->cmd_next}" onclick="content_widget_next(jQuery(this).parents('ul.ncwListPagination').prev('table.ncwList'),{$widget_info->list_count})"><span>{$lang->cmd_next}</span></button></li>
</ul>
<!--@end-->
<!--@end-->
</div>
댓글 3
-
라르게덴
2010.01.20 17:28
-
오뎅궁물
2010.01.20 19:25
답변 감사드립니다. 참고로 Core 1.3.1.2 버전입니다.
님께서 Tip에 올려 놓으신 것도 참고하여 해 보았습니다만 변수는 빈 값을 되돌려 줍니다. 게시판 목록에는 확장변수가 잘 출력이 됩니다.
{$item->getExtraEidValue('shotdate')} 을 입력했을 경우 아예 레이아웃조차 뜨지않고 아래와 같이 나옵니다.
-
오뎅궁물
2010.01.20 20:15
여러분들의 도움으로 해결 했습니다.
답은 widgets/content/content.class.php 에 아래의 내용을 추가해 주어야 하는 군요. 스킨에 추가해서는 안되네요.
function getExtraVars() { $oDocumentModel = &getModel('document'); return $oDocumentModel->getExtraVars($this->get('+ 'module_srl'), $this->get('document_srl')); } function getExtraEidValue($eid) { $extra_vars = $this->getExtraVars(); foreach($extra_vars as $idx => $key) { $extra_eid[$key->eid] = $key; } return $extra_eid[$eid]->value; }
-
라르게덴
2010.01.20 20:52
content 위젯이 document.item.php를 참조하지 않고 자체적으로 해서 그랬군요... 문의 글에 content 위젯이라고만 써놨어도 더 빨리 답변 됐을 것을... -
Rony
2010.01.30 02:10
감사합니다 저도 이것때문에 고심하고 있다가 답변보고 해결했습니다 ^^ 헌데 getExtraEidValue($eid)는 잘 작동하는데, getExtraVars()를 출력하면 Array라는 글자가 출력되네요 ㅠ 무엇에 문제가 있을까요 ㅠ
<!--@else if($v=='regdate')-->
<td class="time"><span class="date">{$item->getRegdate("Y-m-d")}</span> <span class="hour">{$item->getRegdate("H:i")} {$item->getExtraEidValue("shotdate")}</span></td>
<!--@end-->
이렇게 추가해주면 되겠군요.
팁 보시는 김에 http://www.xpressengine.com/17851266 여기도 보세요 ^^