웹마스터 팁
사용자정의 기준 정렬과 사용자정의 검색이 동시에 작동하도록 기능 개선
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
제목 | 글쓴이 | 날짜 |
---|---|---|
1.0.3버전 외부 페이지 쿼리 스트링 붙일때 주의 하세요. | 그라미 | 2008.06.03 |
일정 기간이 지난 글에 코멘트 등록 제한 [3] | 老姜君 | 2008.06.03 |
링크 사이트 제작을 위한 어드바이스 - Planning 1 - [7] | Hammer | 2008.06.04 |
링크 사이트 제작을 위한 어드바이스 - Planning 2 - [6] | Hammer | 2008.06.04 |
1.03버전 글쓸때 오류... [1] | 화려한 부활 | 2008.06.05 |
이전글,다음글 얻기 (검색결과 까지 포함) (수정) [8] | 라르게덴 | 2008.06.05 |
2차메뉴 롤오버 위치 변환.. [3] | 봄처녀 | 2008.06.05 |
링크 사이트 제작을 위한 어드바이스 - Fade In MouseOver - [3] | Hammer | 2008.06.06 |
(위젯) 이미지 클라우드 스킨 사용 법 [2] | Simulz | 2008.06.06 |
PHP 폼메일 [9] | 헥토르 | 2008.06.09 |
링크 사이트 제작을 위한 어드바이스 - MouseOver Preview - [6] | Hammer | 2008.06.10 |
설치시 초기화면으로 돌아가는 문제 해결방법 [4] | PICSTORY™ | 2008.06.11 |
☆조회수.추천수 구간에 따른 이미지 나타내기(Hot 등..) - 갤러리게시판&최근이미지위젯☆ [5] | 오기오기 | 2008.06.12 |
페이지 숫자에 네이버처럼 사각테두리 씌우기 [8] | 탑심 | 2008.06.15 |
할수 있다!! 내 맘대로 DB주무르기 ★DB방식 변경★ | 토리세상 | 2008.06.16 |
페이지 작성이나 수정후 적용이 안돼서 고생하는 많은 분들을 위하여 [1] | cyric | 2008.06.17 |
설치후 권한 재조정 [4] | 덱스터 | 2008.06.17 |
썸네일 생성이 되지 않을시 확인할 내용.. [4] | 또나아빠 | 2008.06.17 |
아이프레임속 링크를 기존페이지에서 이동하기 [1] | 정다운804 | 2008.06.19 |
업그레이드 쉽고,안전하게 하기 [5] | wannabewize | 2008.06.21 |