<!--@if($grant->list)-->
<!--// notice-->
<!--@if($notice_list)-->
<!--@foreach($notice_list as $no => $oDocument)-->
<!--#include("./notice.html")-->
<!--@end-->
<!--@end-->
<!--// document lists -->
<!--@foreach($document_list as $no => $oDocument)-->
<!--#include("./blog.html")-->
<!--@end-->
<!--@end-->
이런식으로 뷰어형태 나열 스킨을 제작중인데
{@ $tag_list = $oDocument->get('tag_list') }
<span class="tags" cond="count($tag_list)">
<!--@for($i=0;$i<count($tag_list);$i++)-->
{@ $tag = $tag_list[$i]; }
<a href="{getUrl('search_target','tag','search_keyword',$tag,'document_srl','')}" class="tag" rel="tag">{htmlspecialchars($tag)}</a><span>,</span>
<!--@end-->
</span>
이 코드를 넣어도 태그 표시가 제대로 안되더군요
딱 작성 바로하거나 글 수정시에만 표시되고 페이지 이동하고 오면 안보입니다
댓글 8
글 작성 직후 보이는 이유는 해당 문서번호만 열람하는 문서읽기 페이지 입니다. 같은 상황으로 메인의 위젯에서 특정한 글을 타겟으로 이동하시면 같은 스킨의 문서 임에도 해당 문서에 한해서 태그가 보일겁니다.
이건 목록에서 요약형식으로 글 내용을 불러와 보여주는 스킨들의 특성입니다. 추천수 조회수 같은 것이 지원되는 것은 목록에서 이미 흔하게 게시물별로 보여줄 수 있는 기능들이 있기 때문입니다.
원하는 태그등을 목록서 각 게시글마다 보여주려면 별도 추가작업이 필요할 겁니다. 이건 꼭 블로그형이라 그런 것이 아니라 게시판목록에서 각 게시판의 태그를 추가로 보여주거나 혹은 그 게시물에 댓글 내용들을 보여주거나 하고 싶을때와 마찬가지입니다.
{@ $tag_list = $oDocument->get('tag_list') } 이 부분을 다음과 같이 바꿔주면 되는 것 같기도 합니다.
{@
$tagModel = &getModel('tag');
$args = new stdClass;
$args->document_srl = $oDocument->document_srl;
$output = $tagModel->getDocumentsTagList($args);
foreach($output->data as $key => $val):
$tag_list[$key] = $val->tag;
endforeach;
}
</block>
<block cond="$document_srl">
{@ $tag_list=$oDocument->get('tag_list') }
</block>
페이지별로 페이지당 글목록 2개인데요
만약 페이지별 글2개가 모두 태그가 등록되어있거나 or 모두 없거나 둘다 각각 정상적으로 뜨는데
2개중 한개만 태그가 등록되어있는 경우에는 나머지 한개에 적혀있던 태그가 없는 게시물에 동일하게 뜨네요
그런 문제가 있을 수 있겠네요.
그리고, 예를 들어 1번 글의 태그가 5개이고 2번 글의 태그가 3개이라면,
2번 글 태그 리스트에 처음 3개는 정상적으로 나오지만,
1번 글 태그 리스트의 영향을 받아서 추가로 두 개(1번 글의 네 번째와 다섯 번째 태그)가 더 나오지 않나요?
암튼 이런 식으로 해결하면 어떨까 싶어요.
{@
if(count($tag_list)):
$tag_list = [];
endif;
$tagModel = &getModel('tag');
$args = new stdClass;
$args->document_srl = $oDocument->document_srl;
$output = $tagModel->getDocumentsTagList($args);
foreach($output->data as $key => $val):
$tag_list[$key] = $val->tag;
endforeach;
}
</block>
<block cond="$document_srl">
{@ $tag_list=$oDocument->get('tag_list') }
</block>
<!--@if($oDocument->get('tag_list'))-->
.... TAG 코딩 ...
<!--@end-->
이렇게 조건문 넣어서 본문 출력을 하고싶은데요 기존 read.html에서는 저게 먹히는데
윤삼님께서 알려주신 태그 겉에 씌우면 아예 안나와버리더라구요
본문에 태그값이 있을때 tns클래스에 margin-bottom값을 주고싶어서요
없을땐 없게하구요~
$document_srl이 없을 때(즉, 주소창에 문서번호가 없는 리스트 상태일 때)에는, 기본적으로 $oDocument->get('tag_list')도 없어요. (그래서 알려드렸던 팁처럼 문서번호를 가지고 태그 리스트를 불러오는 쿼리를 실행시켰던 거죠)
따라서 언급하셨던 조건문을 변수 정의보다 먼저 걸었을 땐 조건 자체가 성립할 수 없습니다.
'없는 변수가 있을 때'라는 조건이 돼버리니까요.
그랬기 때문에 tns를 제어할 수 없었던 게 아닐까 싶습니다.
tns 클래스 바깥의 아래쪽 여백을 태그가 없을 땐 원래대로 하고, 태그가 있을 땐 특정값을 주고 싶다면, 다음과 같이 해보세요.
(xedition 스킨 기준)
{@
if(count($tag_list)):
$tag_list = [];
endif;
$tagModel = &getModel('tag');
$args = new stdClass;
$args->document_srl = $oDocument->document_srl;
$output = $tagModel->getDocumentsTagList($args);
foreach($output->data as $key => $val):
$tag_list[$key] = $val->tag;
endforeach;
}
</block>
<block cond="$document_srl">
{@ $tag_list = $oDocument->get('tag_list') }
</block>
<div class="tns" style="margin-bottom:20px"|cond="count($tag_list)">
<span class="tags" cond="count($tag_list)">
<i class="xi-tags"></i>
<!--@for($i=0;$i<count($tag_list);$i++)-->
{@ $tag = $tag_list[$i]; }
<a href="{getUrl('search_target','tag','search_keyword',$tag,'document_srl','')}" class="tag" rel="tag">{htmlspecialchars($tag)}</a><span>,</span>
<!--@end-->
</span>
<a class="document_{$oDocument->document_srl} action" href="#popup_menu_area" onclick="return false">{$lang->cmd_document_do}</a>
</div>
※ $document_srl이 없는 경우엔 $oDocument->get('tag_list')를 인식할 수 없기 때문에, $tag_list를 먼저 선언해주고 ($oDocument->get('tag_list')가 아니라) count($tag_list)로 조건을 걸어서 margin-bottom값을 제어해야 합니다.