웹마스터 팁
사용자정의 기준 정렬과 사용자정의 검색이 동시에 작동하도록 기능 개선
2015.01.06 14:18
원본 글 출처 : 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>
댓글 2
제목 | 글쓴이 | 날짜 |
---|---|---|
(달력/Archive 문제해결법) 날짜로 검색하는 것이 제대로 안될때 [8] | 베니 | 2007.08.25 |
달력으로 게시판 글 검색하기(블로그 말고)
[4]
![]() | 핑크플로이드 | 2007.10.27 |
통합검색 버그 style 수정 [2] | 소마세월 | 2007.11.11 |
알바트로스 적용후 검색하는 곳에 댓글과 태그 검색 업션 넣기 [1] | 비밀얌 | 2007.11.13 |
내 홈페이지에 구글 검색용 애드센스 달기
![]() | RulruRalra | 2008.01.01 |
게시판 하단 검색 옵션 원하는 것만 넣기 (확장변수 포함) [10] | shtjdals | 2008.01.02 |
검색조건, 제목+내용 을기본으로 설정하기 [7] | 대암지기 | 2008.01.28 |
태그 위젯으로 생성된 태그 리스트에서 한글태그 검색이 안될때 해결법 [3] | 봄대리 | 2008.05.21 |
이전글,다음글 얻기 (검색결과 까지 포함) (수정) [8] | 라르게덴 | 2008.06.05 |
초보 헤메다가 팁//검색기능 보이기 감추기
[3]
![]() | 리히토 | 2008.07.15 |
원하는 위치에 구글 (맞춤)검색창 달기 [2] | 다케루 | 2008.09.02 |
통합검색에서 확장변수 검색하기 [5] | StyleD | 2008.10.12 |
로그인한 회원만 최근 게시글, 검색등 볼수 있도록 하기 [3] | [_)s | 2008.12.31 |
맞춤형 검색창 만들기 [9] | thejeon | 2009.05.19 |
회원 팝업메뉴에서 작성글 클릭시 다른 아이디 검색 안되게 하기 [3] | 절망린 | 2009.07.03 |
게시판 글 검색시 검색 대상 선택을 자유롭게 고치기
[6]
![]() | June Oh | 2009.07.15 |
네이버 실시간 인기검색어 가져오는 함수 [2] | Darby♡ | 2009.09.14 |
게시글 검색 [제목+내용]을 기본으로 하기 [2] | 깜빡이영어 | 2010.11.20 |
로보트 검색엔진에 잘 걸리는 Meta Tag 작성법 [8] | 이성영 | 2002.06.20 |
웹문서 검색을 대비한 헤더,푸터 나누기. [4] | 그럴까? | 2004.10.29 |
감사합니다. 잘 쓰겠습니다.