XE Tips 는 제가 XE 공홈에 쓴 XE 관련 유용한 팁들입니다. 기능개선은 공홈에 안 적어둔 XE 유용 개선팁들입니다.
유용정보는 외부 검색을 통해 알아낸 소스등을 기재해둔 곳입니다.
버그 신고내역들은 XE 사용하다가 발견한 버그 패치방법들로, Core Issue 에 기록해뒀기에 XE 에 적용이 되었을 가능성이 있겠죠
제가 쓴 글들에 대해 퍼가실때는 꼭 출처를남겨주시고.. (다만 플래시뷰 기반이기에 퍼가기는조금 힘들 수 있겠죠 ^^;)
타회원의 글들도 적혀있는 출처를 같이 꼭 기재해주세요
출처 | sejin7940 |
---|
글목록을 random 으로 추출시키고픈 경우
XE 에서는 글목록을 추출할때
document.model.php 에 있는 getDocumentList 라는 함수를 사용한다
그런데 이 함수 자체에 random 추출이 안 된다.
정렬을 제어하는 값 중에 random 을 처리할 수 있는 값이 없기 때문이다
query 에서는 sort_index 변수로 rand() 를 전달해주면 랜덤이 가능하기에
위젯등에서는 랜덤 으로 구현을 해주는 위젯도 있다. 보통 위젯은 getDocumentList 를 안 쓰고 우젯 자체에서 목록을 추출하다보니
그런데 getDocumentList 에는 sort_index 값을 강제로 rand() 라고 전달을 해줘봤자
자동으로 list_order 로 변환되어 처리가 되어서 랜덤적용이 안 된다
정렬변수 관련해서 내부적으로 _setSortIndex 함수를 따르고
여기서는 정의된 칼럼값과, 관리자가 추가한 사용자정의값이 아닌 이상은 list_order 로 초기화가 되어버리기 때문이다
그리고 random 관련 변수는 존재하지 않는다..
결국 랜덤 구현을 하려면 Core 를 수정해야한다
document.model.php 에서
function _setSortIndex 함수에서
$returnObj = new stdClass();
위에다가 아래 문구를 추가해주고
if($obj->sort_index=='random') $sortIndex='rand()'; // sejin7940 추가 - 랜덤기능 위해서
실제 랜덤으로 추출하고픈경우..
$args 설정은 원하시는대로 하고 ( $args->module_srl, $args->category_srl, $args->list_count 등등 )
$args->sort_index = 'random'; // 정렬을 랜덤처리하기 위한 변수 전달
$oDocumentModel = getModel('document');
$document_list = $oDocumentModel->getDocumentList($args);
이런식으로 목록값을 추출하면 랜덤으로 나온다.