웹마스터 팁

원본 글 출처 : http://sejin7940.co.kr/index.php?mid=xe_tips&document_srl=102289

 

 ====================================

 

게시판 설정에서, 정렬기준을  사용자정의값으로 저장가능한 Core 기반에서는

https://www.xpressengine.com/tip/22912043  참조해서  설정 저장 안 되는 버그 수정할 것

 

 

게시판 설정 기준 정렬 기능이 없는 Core 사용시에는

https://www.xpressengine.com/tip/22567972   참조해서,  정렬기능 추가할 것

 

====================================

 

 

현재 사용자정의 기준으로 정렬을 하면  getDocumentListExtraSort.xml  파일이 구현되고.
이 query 는 sort_index 대신 sort가 고정되어있고
사용자정의 기준으로 검색을 하면  getDocumentListWithinExtraVars.xml  파일이 실행되는데
이건 검색만 해당 eid 로 될뿐,  실제 정렬은 사용자정의를 제외한 일반 검색만 가능하게 되어있다.

 

이는 사용자정의 기준으로 정렬 설정을 해두고 사용자정의 검색할때뿐만 아니라.
기본 정렬 (등록일이나 문서번호) 로 정렬 후,  목록에서 사용자정의 기준으로 재정렬 한 후,  사용자정의 검색할때도
마찬가지로 결과가 안 나오는 문제가 발생한다.

 

결국 각각 다른 사용자정의 기준으로도  정렬 과 검색이 각각 될 수 있도록
테이블 3개를 join 한 새로운 query 를 추가하여 구현되도록 보완했다

 

 


1.
modules/document/document.model.php 에서

function getDocumentList  함수에서

if ($sort_check->isExtraVars)  


이 한줄을 아래 구문 전체로 교체

if ($sort_check->isExtraVars && substr_count($obj->search_target,'extra_vars'))
{
 $query_id = 'document.getDocumentListWithinExtraVarsExtraSort';
 $args->sort_index = str_replace('documents.','',$args->sort_index);
 $output = executeQueryArray($query_id, $args);
}
elseif ($sort_check->isExtraVars)

 

 

 

2.
modules/document/queries/getDocumentListWithinExtraVarsExtraSort.xml

파일 신규 생성

 

<query id="getDocumentListWithinExtraVarsExtraSort" action="select">
    <tables>
        <table name="documents" alias="d" />
        <table name="document_extra_vars" alias="ev" />
        <table name="document_extra_vars" alias="es" />
    </tables>
    <columns>
        <column name="d.*" />
    </columns>
 <index_hint name="idx_document_list_order" type="use" />
    <conditions>
        <condition operation="equal" column="ev.eid" var="sort_index" />
        <condition operation="equal" column="ev.document_srl" default="d.document_srl" pipe="and" />
        <condition operation="in" column="d.module_srl" var="module_srl" filter="number" pipe="and" />
        <condition operation="notin" column="d.module_srl" var="exclude_module_srl" filter="number" pipe="and" />
        <condition operation="in" column="d.category_srl" var="category_srl" pipe="and" />
        <condition operation="equal" column="d.is_notice" var="s_is_notice" pipe="and" />
        <condition operation="equal" column="d.member_srl" var="member_srl" filter="number" pipe="and" />
        <condition operation="in" column="d.status" var="statusList" pipe="and" />
        <group pipe="and">
            <condition operation="more" column="d.list_order" var="division" pipe="and" />
            <condition operation="below" column="d.list_order" var="last_division" pipe="and" />
        </group>
        <group pipe="and">
            <condition operation="like" column="d.title" var="s_title" />
            <condition operation="like" column="d.content" var="s_content" pipe="or" />
            <condition operation="like" column="d.user_name" var="s_user_name" pipe="or" />
            <condition operation="like" column="d.user_id" var="s_user_id" pipe="or" />
            <condition operation="like" column="d.nick_name" var="s_nick_name" pipe="or" />
            <condition operation="like" column="d.email_address" var="s_email_addres" pipe="or" />
            <condition operation="like" column="d.homepage" var="s_homepage" pipe="or" />
            <condition operation="like" column="d.tags" var="s_tags" pipe="or" />
            <condition operation="equal" column="d.is_secret" var="s_is_secret" pipe="or" />
            <condition operation="equal" column="d.member_srl" var="s_member_srl" pipe="or" />
            <condition operation="more" column="d.readed_count" var="s_readed_count" pipe="or" />
            <condition operation="more" column="d.voted_count" var="s_voted_count" pipe="or" />
            <condition operation="less" column="d.blamed_count" var="s_blamed_count" pipe="or" />
            <condition operation="more" column="d.comment_count" var="s_comment_count" pipe="or" />
            <condition operation="more" column="d.trackback_count" var="s_trackback_count" pipe="or" />
            <condition operation="more" column="d.uploaded_count" var="s_uploaded_count" pipe="or" />
            <condition operation="like_prefix" column="d.regdate" var="s_regdate" pipe="or" />
            <condition operation="like_prefix" column="d.last_update" var="s_last_update" pipe="or" />
            <condition operation="like_prefix" column="d.ipaddress" var="s_ipaddress" pipe="or" />
        </group>
        <group pipe="and">
            <condition operation="more" column="d.last_update" var="start_date" pipe="and" />
            <condition operation="less" column="d.last_update" var="end_date" pipe="and" />
        </group>
  <group pipe="and">
   <condition operation="equal" column="es.var_idx" var="var_idx" pipe="and" />
   <condition operation="like" column="es.value" var="var_value" pipe="and" />
   <condition operation="equal" column="es.document_srl" default="d.document_srl" pipe="and" />
  </group>
    </conditions>
    <navigation>
        <index var="ev.value" default="ev.value" order="order_type" />
        <list_count var="list_count" default="20" />
        <page_count var="page_count" default="10" />
        <page var="page" default="1" />
    </navigation>
</query>


 

 

제목 글쓴이 날짜
[정식 버전 1.0.0] 회원 정보에서 ID 변경하기(1) 모듈부분 [1] 대암지기 2008.02.27
[정식 버전 1.0.0] 회원 정보에서 ID 변경하기(0) 안내 [1] file 대암지기 2008.02.27
졸졸이 스토커 mid값에 따라 제한하기 [8] 똑디 2008.02.26
카테고리를 사용하는 게시판모듈 글작성시 카테고리 선택하게 하기 [9] 대암지기 2008.02.25
[정식 버전 1.0.0][완결편]회원가입시 기본 정보공개 여부 체크하기(2) 스킨부분 대암지기 2008.02.24
[정식 버전 1.0.0][완결편]회원가입시 기본 정보공개 여부 체크하기(1) 모듈부분 [4] 대암지기 2008.02.24
[정식 버전 1.0.0][완결편]회원가입시 기본 정보공개 여부 체크하기(안내) [2] file 대암지기 2008.02.24
Exobud BGM 음악플레이어 15 종류입니다. 푸른커튼 2008.02.24
게시물 목록의 번호를 순서대로 출력 [6] file 지연아빠 2008.02.23
티스토리에서 제로보드Xe 이전시 필독사항!! [1] file 2008.02.23
[펌] Apache rewrite Module [8] ☜ TeRy ☞ 2008.02.22
외부 페이지에서 변수와 값 사용하기(초보) [2] 기범현지아빠 2008.02.22
잡다한 2차 사용하시는분들 중에 페이지 수정버튼이 클릭안될때.. [6] 수아기 2008.02.22
글을 읽을때 마다 조회수 증가시키기 (0.2.9수정#3) [1] SKYMARU 2008.02.20
[전면수정]회원가입시 기본 정보공개 여부 체크하기(1) 모듈부분 [5] 대암지기 2008.02.20
제로보드 XE 0.2.9버젼 업그레이드후 글보기할때 레이아웃 약간깨짐현상이 일어날때... [2] file 카니엘 2008.02.19
배너 랜덤추출 스크립트 [xe적용방법] [16] 라싸 2008.02.19
웹표준체크 [4] tsana 2008.02.19
인사말 랜덤추출 스크립트 [xe적용방법] [12] 라싸 2008.02.18
[전면수정]회원가입시 기본 정보공개 여부 체크하기(2) 스킨부분 대암지기 2008.02.17