{@ // $db_info = Context::getDBInfo(); // $oDB = &DB::getInstance(); // $query = $oDB->_query('select * from '.$db_info->master_db[db_table_prefix].'document_extra_keys where module_srl = '.$module_info->module_srl.' AND message_type = "R" ORDER BY regdate DESC limit 0, 5'); // $result = $oDB->_fetch($query); // $output = executeQueryArray('addons.message_alarm.getMessageCount', $aobj); } <!-- xe 사용자정의 정렬 $document->getExtraEidValue('deadline') $document->getExtraEidValue('budget') --> {@ //function _setSortIndex($obj, $load_extra_vars) { ////확장변수 eid로 정렬 //if($obj->sort_index == 'deadline') { //확장변수의 eid //$returnObj = new stdClass(); //$returnObj->sort_index = $obj->sort_index; //$returnObj->isExtraVars = true; //return $returnObj; // //$args = new stdClass(); //$args->module_srl = $module_info->module_srl; //$args->sort_index = 'deadline'; //$output = $oDocumentModel->getDocumentList($args); }
아마 이렇게 따로 하면 되지 않을까 하고 삽질을 하고 있었다.
<a href="{getUrl('sort_index','regdate','order_type','desc')}" class="active"|cond="$sort_index=='regdate'">최신등록순</a> <a href="{getUrl('sort_index','deadline','order_type','asc')}" class="active"|cond="$sort_index=='deadline'">마감임박순</a> <a href="{getUrl('sort_index','budget','order_type','desc')}" class="active"|cond="$sort_index=='budget'">고가순 </a>
그런데 이미 이렇게 가능은 하더라.
문제점이.
1. 날짜 임박순
2. 숫자인 경우
위 케이스에 대해서는 별도의 클래스 함수를 만들던가 해야하겠더라.
일단은 그래서 XE 시절의 함수 만드는 방법, 스킨에서 커스텀함수를 불러와서 사용하는 방법 등을 찾아서 정리를 해보겠다.
1. XE 확장변수 eid로 정렬하기
document.model.php의
function _setSortIndex()의 젤 윗줄에 아래 코드 추가
function _setSortIndex($obj, $load_extra_vars) {
//확장변수 eid로 정렬
if($obj->sort_index == 'eng_name') { //확장변수의 eid
$returnObj = new stdClass();
$returnObj->sort_index = $obj->sort_index;
$returnObj->isExtraVars = true;
return $returnObj;
}
.......
이런 식으로 쓰면 됨.
$args = new stdClass();
$args->module_srl = 104;
$args->sort_index = 'eng_name';
$output = $oDocumentModel->getDocumentList($args);
2. [XE 기능개선] 확장변수 정렬 설정을 게시판 설정쪽에 추가하는 방법
xe 사용자정의 정렬 숫자/
저의 경우에는 게시물 목록을 스킨에서 직접 불러온 후(XE 내장 함수 이용)에 array_multisort 함수로 정렬해주고 있어요
http://sejin7940.co.kr/index.php?mid=xe_tips&document_srl=98103
https://xe1.xpressengine.com/index.php?mid=tip&document_srl=22479901
http://sejin7940.co.kr/index.php?mid=xe_tips&document_srl=96426
https://xe1.xpressengine.com/tip/18605555
https://moonhouse.co.kr/xetip/282822
1. board/tpl/board_insert.html
<option loop="$order_target=> $key, $val" value="{$key}" selected="selected"|cond="$module_info->order_target== $key">{$val}</option>
아래에다가 추가
{@
$oDocumentModel = &getModel('document');
$inserted_extra_vars = $oDocumentModel->getExtraKeys($module_srl);
}
<option loop="$inserted_extra_vars => $key, $val" selected="selected"|cond="$module_info->order_target== $val->eid" value="{$val->eid}">{$val->name}</option>
2. board/board.admin.controller.php 에서
function procBoardAdminInsertBoard 함수에서
if(!in_array($args->order_target,$this->order_target)) $args->order_target = 'list_order';
위에다가 추가
if($args->module_srl) {
$oDocumentModel = &getModel('document');
$extra_keys = $oDocumentModel->getExtraKeys($args->module_srl);
if (is_array($extra_keys)){
foreach($extra_keys as $val){
$this->order_target[] = $val->eid;
}
}
}
3. modules/board/board.view.php 에서
function dispBoardContentList() 함수에서
if(!in_array($args->order_type, array('asc','desc'))) 위에다가 추가
// sejin7940 추가 ( 확장변수 기준 정렬 기능 )
if(!Context::get('sort_index') && $extra_keys) {
foreach($extra_keys as $key => $val) {
$order_target_extra[] = $val->eid;
}
if(in_array($this->module_info->order_target, $order_target_extra)) {
Context::set('sort_index',$this->module_info->order_target);
}
}
3. 확장변수를 숫자로 인식하기 / xe 사용자정의 정렬 숫자
https://xe1.xpressengine.com/tip/20485191
https://xe1.xpressengine.com/qna/21290187
4. 게시판 스킨에서 내가 만든 함수 적용하기/xe 사용자함수
chongmoa.com/xe/5665
포기쓰...