<!--@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>

 

이 코드를 넣어도 태그 표시가 제대로 안되더군요

딱 작성 바로하거나 글 수정시에만 표시되고 페이지 이동하고 오면 안보입니다

 

  • profile
    블로그형,한줄메모 등 말씀하신 스킨의 글 보여주는 화면은 사실 목록화면입니다. 목록화면에서는 모든 글의 목록을 보여주는 것이라 각 개별 게시물에 소속된 태그를 보여주지 못할 겁니다. 문서번호같은게 존해하는 주소가 아니기 때문이죠.
    글 작성 직후 보이는 이유는 해당 문서번호만 열람하는 문서읽기 페이지 입니다. 같은 상황으로 메인의 위젯에서 특정한 글을 타겟으로 이동하시면 같은 스킨의 문서 임에도 해당 문서에 한해서 태그가 보일겁니다.

    이건 목록에서 요약형식으로 글 내용을 불러와 보여주는 스킨들의 특성입니다. 추천수 조회수 같은 것이 지원되는 것은 목록에서 이미 흔하게 게시물별로 보여줄 수 있는 기능들이 있기 때문입니다.

    원하는 태그등을 목록서 각 게시글마다 보여주려면 별도 추가작업이 필요할 겁니다. 이건 꼭 블로그형이라 그런 것이 아니라 게시판목록에서 각 게시판의 태그를 추가로 보여주거나 혹은 그 게시물에 댓글 내용들을 보여주거나 하고 싶을때와 마찬가지입니다.
  • profile ?
    • sami
    • 질문기여자
    그렇군요! 친절한 답변 감사드립니다 태그쪽은 어쩔 수 없겠네요 아쉽지만..ㅠㅠ
  • profile

    {@ $tag_list = $oDocument->get('tag_list') } 이 부분을 다음과 같이 바꿔주면 되는 것 같기도 합니다.

     

    <block cond="!$document_srl">
    {@
        $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>

     

  • profile ?
    • sami
    • 질문기여자
    안녕하세요 윤삼님 도움주셔서 감사합니다 알려주신데로 고쳐보았는데 약간 문제가 있네요

    페이지별로 페이지당 글목록 2개인데요
    만약 페이지별 글2개가 모두 태그가 등록되어있거나 or 모두 없거나 둘다 각각 정상적으로 뜨는데
    2개중 한개만 태그가 등록되어있는 경우에는 나머지 한개에 적혀있던 태그가 없는 게시물에 동일하게 뜨네요
  • ? profile

    그런 문제가 있을 수 있겠네요.

    그리고, 예를 들어 1번 글의 태그가 5개이고 2번 글의 태그가 3개이라면,

    2번 글 태그 리스트에 처음 3개는 정상적으로 나오지만,

    1번 글 태그 리스트의 영향을 받아서 추가로 두 개(1번 글의 네 번째와 다섯 번째 태그)가 더 나오지 않나요?

     

    암튼 이런 식으로 해결하면 어떨까 싶어요.

     

    <block cond="!$document_srl">
    {@
        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>

     

  • profile ?
    • sami
    • 질문기여자
    윤삼님 이제 잘뜨네요! 도움주셔서 정말 감사드립니다!!!!!(_ _) 좋은하루 보내세요
  • profile ?
    • sami
    • 질문기여자
    윤삼님 질문하나만 더 해도 될까요? ㅠㅠ 계속 부탁드려 죄송합니다

    <!--@if($oDocument->get('tag_list'))-->
    .... TAG 코딩 ...
    <!--@end-->

    이렇게 조건문 넣어서 본문 출력을 하고싶은데요 기존 read.html에서는 저게 먹히는데
    윤삼님께서 알려주신 태그 겉에 씌우면 아예 안나와버리더라구요
    본문에 태그값이 있을때 tns클래스에 margin-bottom값을 주고싶어서요
    없을땐 없게하구요~
  • ? profile

    $document_srl이 없을 때(즉, 주소창에 문서번호가 없는 리스트 상태일 때)에는, 기본적으로 $oDocument->get('tag_list')도 없어요. (그래서 알려드렸던 팁처럼 문서번호를 가지고 태그 리스트를 불러오는 쿼리를 실행시켰던 거죠)

     

    따라서 언급하셨던 조건문을 변수 정의보다 먼저 걸었을 땐 조건 자체가 성립할 수 없습니다.

    '없는 변수가 있을 때'라는 조건이 돼버리니까요.

    그랬기 때문에 tns를 제어할 수 없었던 게 아닐까 싶습니다.

     

    tns 클래스 바깥의 아래쪽 여백을 태그가 없을 땐 원래대로 하고, 태그가 있을 땐 특정값을 주고 싶다면, 다음과 같이 해보세요.

     

    (xedition 스킨 기준)

    <block cond="!$document_srl">
        {@
            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값을 제어해야 합니다.