로그인

검색

Extra Form
추천지수 6

최근 판매되기 시작한 타임라인 플러스 모듈에 관해 언급해 드린 적이 있습니다. 이 타임라인 플러스 모듈의 장점 중 하나인 조건을  OR 로 사용할 수 있다는 점인데요.

 

https://rxtip.kr/rx_story/3214

 

이건 인기글 선정시 조회 100번 된 게시글 혹은 추천 10개 받은 게시글 둘다 인기글로 뽑을 수 있는 OR 조건이 작동한다는 것 입니다.

 

그런데 메인 위젯에서 이러한 인기글,베스트글 중 최신글을 뽑으려 한다면 위젯에서 보통 이  OR, AND 조건을 지원하지 않기 때문에 아쉬운대로 조회수, 또는 추천수 높은 수 우선 정렬하는 방식으로 대체 했습니다.

 

그런데 오늘 위젯도 타임라인 플러스 모듈의 게시판에서 처럼 조회수,추천수 2가지 기준을  OR  또는 AND 로 작동하게 고쳐 보았습니다.

 

인기글.png

 

추천이 없는데도 올라온 글은 기준 조회수보다 높은 조회를 보였기 때문입니다. 저희는 OR를 선택

 

 

 

타임라인 모듈의 설정을 가져와서 그대로 타임라인 모듈의 쿼리를 사용하는 방식으로 하면 좋겠지만 위젯에서 쿼리를 별도로 추가하는 방식으로 간단히  추천,조회 항목만 적용한 간단한 팁입니다.

 

 

저희는 comely 위젯을 고쳤습니다. 다른 위젯도 같은 방식으로 고치시면 되니 따라서 고쳐보세요.

 

 

우선 위젯 코드를 작성할때 이 타임라인 처럼 적용할 건지에 관한 설정을 추가로 만들어 주어야 합니다.

위젯의 conf 폴더에 보면 info.xml 이 있습니다.

 

아래의 내용을 추가해 주세요.

 

<var id="timeline_select">
<type>select</type>
<name xml:lang="ko">타임라인용 쿼리 선택</name>
<description xml:lang="ko">타임라인 조건을 선택할 수 있습니다.</description>
<options>
<value>N</value>
<name xml:lang="ko">사용 안함</name>
</options>
<options>
<value>O</value>
<name xml:lang="ko">OR</name>
</options>
<options>
<value>A</value>
<name xml:lang="ko">AND</name>
</options>
</var>
<var id="s_readed_count" type="text">
<name xml:lang="ko">조회수 이상</name>
<description xml:lang="ko">설정된 조회수 이상의 게시글을 불러옵니다.</description>
</var>
<var id="s_voted_count" type="text">
<name xml:lang="ko">추천수 이상</name>
<description xml:lang="ko">설정된 추천수 이상의 게시글을 불러옵니다.</description>
</var>

 

타임라인 이라는 용어는 타임라인 처럼 이라고 이해하면 더 쉽겠습니다.

 

 

기본 사용 안함이고 사용하고 싶은  OR, AND 조건을 선택하게 되어 있습니다. 기존에 삽입된 위젯코드에는 이 항목을 추가해줘야 동작하겠죠?

 

 

 

 

그리고 위젯의  php 에서 쿼리 부분을 저 선택에 맞춰 쿼리를 다르게 하면 되는데요. 이를 위해 OR용 쿼리파일과  AND의 쿼리파일을 새롭게 만들어 쿼리(queries) 폴더에 업로드 합니다.

 

 

 

<query id="getNewestDocumentsOr" action="select">
    <tables>
        <table name="documents" />
    </tables>
    <columns>
        <column name="*" />
    </columns>
    <conditions>
        <condition operation="in" column="documents.module_srl" var="module_srl" filter="number" notnull="notnull" pipe="and" />
        <condition operation="more" column="regdate" var="regdate" pipe="and" />
        <condition operation="equal" column="documents.category_srl" var="category_srl" pipe="and" />
        <condition operation="in" column="status" var="statusList" pipe="and" />
        <condition operation="equal" column="documents.is_notice" var="is_notice" pipe="and" default="N" filter="alpha" />
    <group pipe="and">
    <condition operation="more" column="readed_count" var="s_readed_count" pipe="or" />
    <condition operation="more" column="voted_count" var="s_voted_count" pipe="or" />
    </group>

    </conditions>
    <navigation>
        <index var="sort_index" default="documents.list_order" order="order_type" />
        <list_count var="list_count" default="20" />
    </navigation>
</query>

 

파란색은 위치가 변경된 것이고 붉은색은 추가가 된 것입니다. 물론 사용하는 위젯에 따라 쿼리의 내용이 약간 다를 수 있으니 이점은 참고해서..

 

 

위 파일을 getNewestDocumentsOr.xml 파일로 저장한 다음  위젯의 쿼리(queries)폴더에 업로드 합니다. (따로 첨부해 드리겠습니다.)

 

 

 

 

 

<query id="getNewestDocumentsAnd" action="select">
    <tables>
        <table name="documents" />
    </tables>
    <columns>
        <column name="*" />
    </columns>
    <conditions>
        <condition operation="in" column="documents.module_srl" var="module_srl" filter="number" notnull="notnull" pipe="and" />
        <condition operation="more" column="regdate" var="regdate" pipe="and" />
        <condition operation="equal" column="documents.category_srl" var="category_srl" pipe="and" />
        <condition operation="in" column="status" var="statusList" pipe="and" />
        <condition operation="equal" column="documents.is_notice" var="is_notice" pipe="and" default="N" filter="alpha" />
    <group pipe="and">
    <condition operation="more" column="readed_count" var="s_readed_count" pipe="and" />
    <condition operation="more" column="voted_count" var="s_voted_count" pipe="and" />
    </group>

    </conditions>
    <navigation>
        <index var="sort_index" default="documents.list_order" order="order_type" />
        <list_count var="list_count" default="20" />
    </navigation>
</query>

 

 

이 파일은 getNewestDocumentsAnd.xml 파일로 저장해서 쿼리 폴더에 업로드 합니다.

 

 

 

이제 위젯의  php 파일에 쿼리부분을 수정해 줍니다.

 

 

        if($args->timeline_select == 'O')
        {
        $obj->s_readed_count =  $args->s_readed_count;
        $obj->s_voted_count =  $args->s_voted_count;
        $output = executeQueryArray('widgets.comely_widget.getNewestDocumentsOr', $obj);
        }
        else if($args->timeline_select == 'A')
        {
        $obj->s_readed_count =  $args->s_readed_count;
        $obj->s_voted_count =  $args->s_voted_count;
        $output = executeQueryArray('widgets.comely_widget.getNewestDocumentsAnd', $obj);
        }
        else
        {
        $output = executeQueryArray('widgets.comely_widget.getNewestDocuments', $obj); // 원래 쿼리
        }

 

 

원래 쿼리 를 위와 같이 조건을 걸어 원하는 옵션에 맞게 쿼리를 할수 있도록 코드를 바꿔 줍니다. 원래 쿼리 외 부분이 전부 추가된 부분입니다.

여기도 마찬가지로 다른 위젯이라면 쿼리 경로와 변수를 적절히 바꿔주세요. 

 

('widgets.comely_widget.getNewestDocuments', $obj)

 

comely_widget. -> 위젯폴더명

widget.getNewestDocuments' -> 쿼리파일명

$obj -> 다른 변수로 사용되었을 수 있습니다.

 

이렇게 바꾸고 나면 이제 원하는  추천 조회 OR 또는 AND 조건에 맞는 게시글을 뽑아서 보여 줄 수 있습니다.

 

기존 코드에는 새로 생긴 변수가 없을때니 적용하고 싶으면 추가해 주면 됩니다. 아니면 위젯 코드를 새로 생성해서 새로운 부분만 골라서 넣으면 되구요.

 

위젯옵션.png

 

이렇게 OR  50 10 으로 넣으면 위젯코드에는 

 

timeline_select="O" s_readed_count="50" s_voted_count="10"

 

요런부분이 추가되어 코드가 만들어지게 되는 겁니다.

 

그럼 잘 따라하셔서 성공하시길 기원합니다!

 

 

ps. timline_select <--  오타이나 동작에는 크게 상관 없습니다. 일괄적으로 오타가 나있으니... 거슬리는 분은 바꾸세요 ㅋ timeline_select 

바꾸면 위젯코드 새로 생성해서 변수 바뀐거로 적용하셔야 합니다. (이 글에서 오타는 16시 51분에 모두 수정했습니다.)

 

 

* karius님께서 제보해주셔서 확인되었습니다. 쿼리 파일 getNewestDocumentsOr.xml 의 코드가 잘못되어 있어 수정한 파일로 교체 해서 업로드 했습니다. 이전에 받으셨다면 교체해야 합니다. (2021.1.11 14:20)

이 컨텐츠가 마음에 드셨다면 커피 한잔 (후원)

Who's 꿀팁관리소장

profile
라이믹스로 커뮤니티 사이트를 운영하는 비개발자 운영자 입니다.
파트너쉽 맺으실 사이트 운영자분 환영합니다.
0 추천
Atachment
첨부 '2'
  • k
    karius 2021.01.06 15:59

    후.. 어렵네요...
    저같은경우 기본 content 위젯에 snax slow 스킨을 사용중인데 가능할까요??

  • profile
    꿀팁관리소장 2021.01.06 16:04
    To.karius
    content 위젯에 적용해도 가능합니다. 다만 content 위젯의 경우는 코어에 포함된 자료라 코어 업데이트 시 마다 초기화 되는 문제가 있어 관리를 해주셔야 합니다.
  • k
    karius 2021.01.06 16:10
    To.꿀팁관리소장
    적용방법의 경우 동일할까요..?
    라이믹스 초보자라 어떤파일을 손대야할지 겁이나서요..
    번거로우시겠지만.. 경로확인이 가능할지..
  • profile
    꿀팁관리소장 2021.01.06 16:14
    To.karius
    동일합니다.
    경로는

    본문에 나와있듯이

    쿼리파일 만들어서 업로드할 경로는
    /widgets/수정하시려는위젯/queries

    php파일은
    /widgets/수정하시려는위젯/ 의 php파일

    info.xml 은
    /widgets/수정하시려는위젯/conf

    입니다.
  • K
    Karius 2021.01.06 17:06
    To.꿀팁관리소장
    넵 감사합니다! 한번 도전해보겠습니다
  • K
    Karius 2021.01.06 17:54
    To.꿀팁관리소장
    와.. 설명해주신대로 따라만하니까 잘되네요...
    다만 OR 옵션이 제대로 동작하지않는것같습니다.

    조회수 30 추천수 1 AND 옵션시 에는 정상동작하나
    조회수 30 추천수 1 OR 옵션이에는 모든글 출력됩니다 ㅠㅠ
  • profile
    꿀팁관리소장 2021.01.06 17:58
    To.Karius
    저희는 OR 로 잘 되고 있습니다. 사용하시는 위젯의 쿼리가 어떻게 다른지 몰라도 왜 그런지 모르겠네요. 제가 정보도 없구요.
    AND 옵션은 두가지를 다 만족해야 해서 사용하기 좀 부담스러울 수 도 있습니다.
  • profile
    꿀팁관리소장 2021.01.06 18:18
    To.Karius
    말씀하신 증상은

    php 조건문에서 설정값이 'O' 인 상태를 인식하지 못해서 모든글을 쿼리하는 마지막의 쿼리가 작동하는 상태 일 겁니다.

    원인은 php에서 조건을 거실때 뭔가 오타를 내시거나 잘못 작성하셨거나
    혹은 설정 부분 info.xml 에 선택 부분 을 추가하실때 오타를 내시거나 혹은 위치를 잘못 넣으셨거나 등의 문제로 실제 선택한 OR 선택이 선택된 것으로 감지가 안되는 듯 하네요.
  • k
    karius 2021.01.11 14:00 SECRET

    "비밀글입니다."

  • profile
    꿀팁관리소장 2021.01.11 14:28
    To.karius
    그러네요. 말씀 해주신 getNewestDocumentOr.xml 쿼리파일이 수정되지 않은 것이 첨부 되어 있었네요. 교체해서 업로드 다시 했습니다. 제보 감사합니다.
  • s
    smith 2022.01.23 23:50
    정말 감사드립니다 ㅠㅠ
  • S
    SS 2022.07.05 15:46
    유용한 글 감사합니다.
  • 파닐리아 2022.07.06 08:36
    좋은 팁 감사합니다

라이믹스 팁(112)

라이믹스 운영과 사용에 관한 팁을 공유 합니다.

  1. read more
  2. read more
  3. Read More
  4. Read More
  5. 스케치북 빵조각 '메뉴 아이콘' 적용해 보았습니다.

    Date2021.04.21 Category기능 Views99 Votes0
    Read More
  6. Read More
  7. 본문 게시글 주소 복사 버튼 여러곳에 추가해 주기 18

    Date2021.04.10 Category기능 Views125 Votes0
    Read More
  8. input 입력창 크기가 작거나 이상한가요? css box-sizing

    Date2021.04.09 Category기타 Views102 Votes1
    Read More
  9. 본문 게시글 주소 클립보드 복사 기능 만들기 19

    Date2021.04.06 Category기능 Views304 Votes0
    Read More
  10. Read More
  11. 라이믹스 2.0 회원 서명 높이를 조절 하고 싶다면

    Date2021.03.13 Category기능 Views139 Votes1
    Read More
  12. Read More
  13. Read More
  14. Read More
  15. Read More
  16. Flex 레이아웃 로그인 오류 메시지 안뜨는 문제 해결

    Date2021.01.31 Category오류 Views117 Votes0
    Read More
  17. Read More
  18. Read More
  19. Read More
  20. Read More
  21. Read More
  22. Read More
  23. Read More
  24. Read More
  25. Read More
  26. Read More
  27. Read More
  28. Read More
  29. Read More
  30. Read More
  31. Read More
  32. Read More
Prev 1 2 3 4 Next
/ 4
닫기
작성자에게 커피 한잔(후원)을 사주세요.
컨텐츠 작성자 : 꿀팁관리소장

후원하셨던 이름을 알려주세요.

후원 완료
후원하셨다면 [후원 완료] 버튼을 눌려주세요.