Extra Form
PHP PHP 7.0
CMS Rhymix

위젯을 만들다 보니 content위젯에 있는 카테고리로 문서를 출력하는 팁이 필요해서 찾다보니

XE사이트에 앙띠2님이 2010년도에 올려 주신 팁이 있어서 제가 간추려 정리해 보니 잘 작동합니다.

https://xe1.xpressengine.com/tip/18862050

 

1. 위젯의 xxx.class.php 파일을 편집기로 열어서 파란색 부분을 찿아서 코드에 빨간색 소스 추가합니다.

            if($args->category_srl) {
                $obj->category_srl = (int)$args->category_srl;
                $output = executeQueryArray("widgets.xxx.getCategories", $obj);

                $output = executeQueryArray('widgets.xxx.getxxx', $obj);
            } else 
                $output = executeQueryArray('widgets.xxx.getxxx', $obj);
 

2. info.xml 파일에 아래 설정 추가

<var id="category_srl">
    <type>text</type>
    <name xml:lang="ko">대상 분류 srl값</name>
    <description xml:lang="ko">표시하고 싶은 분류만 나타나도록 할 경우 해당 분류 srl값을 입력해 주세요. (콤마(,)로 구분, 비워두시면 모든 분류 대상, 예:123,456)</description>
</var>

 

[질문입니다]

위와 같이 적용하니 대상 분류 srl값에 한개의 분류는 적용이 잘 되는데 콤마(,)로 구분 이 부분이 작동을 하지를 않네요

분류2개를 123,456 해서 적용하면 123분류만 출력이 되네요.

어떻게 하면 여러개의 분류를 적용할 수 있을까요.

  • profile
    일단 코드를 보면 $output = executeQueryArray("widgets.xxx.getCategories", $obj); 이것을
    $output = executeQueryArray('widgets.xxx.getxxx', $obj); 이것이 덮어쓰고 있는 것 같습니다.

    잘은 모르겠지만 해당 증상은 $obj->category_srl = (int)$args->category_srl; 이 부분이 문제인 것 같은데요. 입력값이 정수로 바뀌면서 쉼표 포함 그 이하의 입력값이 증발하는 게 아닌가 싶습니다.

    그리고 카테고리 번호를 쉼표 단위로 여러 개 가져온다면 $args->category_srl을 배열로 explode 시키는 작업이 필요할 것 같은데, 위젯 구조상 그냥 알아서 되는 건지는 잘 모르겠네요.
  • ?
    <div class="best_article">
    <img class="zbxe_widget_output" widget="comely_widget" skin="comley_widget_skin" module_srls="32656" content_type="document" is_notice="N" list_type="wln" show_rank="Y" tab_type="N" widget_design="LB" title_design="L" w_title="ㅇㅇ 리스트" list_count="2" page_count="5" show_page_num="Y" subject_cut_size="36" thumb_space="20" slide_info="Y" slide_arrow="Y" slide_page="Y" option_view="title,thumbnail,nickname" show_comment_count="Y" show_browser_title="N" show_category="N" show_user_icon="Y" show_icon="Y" order_target="last_update" order_type="desc" />
    </div>
  • ?
    아래와 같이 작성해도 하나의 카테고리와 비워두면 전체 출력은 잘 되는군요.
    $obj->category_srl = $args->category_srl;
    $output = executeQueryArray("widgets.xxx.getCategories", $obj);
    $output = executeQueryArray('widgets.xxx.getxxx', $obj);

    근데 다수의 카테고리는 content위젯을 아무리 둘러봐도 제 실력으로는 어렵네요ㅠㅠ