XpressEngine - 팁 공유 게시판
자신이 생각하기에는 아주 사소한 내용이라도 누군가에게는 큰 도움이 될 수 있습니다.
제로보드4 버전의 팁을 공유하고 싶으시다면 여기로~
이걸 애드온으로 해둘까하다가 그냥 입맛에 맞게 하시라고 소스만 드릴게요.
function getDocumentDivision($document_srl,$type,$order){
$oDocumentModel = &getModel('document');
$oDocument = $oDocumentModel->getDocument($document_srl, '');
$args->module_srl = $oDocument->get('module_srl');
if($order == 'list_order') {
$args->list_order = $oDocument->get('list_order');
$args->sort_index = 'list_order';
} elseif($order == 'update_order') {
$args->update_order = $oDocument->get('update_order');
$args->sort_index = 'update_order';
}
if($type == 'next') $args->order_type = 'desc';
elseif($type == 'prev') $args->order_type = 'asc';
$args->list_count = 1;
$args->page_count = 1;
$args->page = 1;
if($type == 'next') $output = executeQuery("document.getNextDivision", $args);
elseif($type == 'prev') $output = executeQuery("document.getPrevDivision", $args);
if($output->data) {
$data = array_pop($output->data);
$division_document = $data->document_srl;
}
return $division_document;
}getNextDivision.xml
<query id="getNextDivision" action="select"> <tables> <table name="documents" /> </tables> <columns> <column name="*" /> </columns> <conditions> <condition operation="in" column="module_srl" var="module_srl" filter="number" /> <condition operation="below" column="list_order" var="list_order" filter="number" pipe="and" /> <condition operation="below" column="update_order" var="update_order" filter="number" pipe="and" /> </conditions> <navigation> <index var="sort_index" default="list_order" order="order_type" /> <list_count var="list_count" default="1" /> <page_count var="page_count" default="1" /> <page var="page" default="1" /> </navigation> </query>
getPrevDivision.xml
<query id="getPrevDivision" action="select"> <tables> <table name="documents" /> </tables> <columns> <column name="*" /> </columns> <conditions> <condition operation="in" column="module_srl" var="module_srl" filter="number" /> <condition operation="excess" column="list_order" var="list_order" filter="number" pipe="and" /> <condition operation="excess" column="update_order" var="update_order" filter="number" pipe="and" /> </conditions> <navigation> <index var="sort_index" default="list_order" order="order_type" /> <list_count var="list_count" default="1" /> <page_count var="page_count" default="1" /> <page var="page" default="1" /> </navigation> </query>
스킨 같은 곳에서 사용 방법
{@$oDivision = &getModel('document')}
다음글 {$oDivision->getDocumentDivision($oDocument->document_srl,'next','list_order')}
이전글 {$oDivision->getDocumentDivision($oDocument->document_srl,'prev','list_order')}
list_order로 정렬 법과 update_order로 정렬 법으로 되게 해봤습니다.
executeQuery("document.getNextDivision", $args);
document 은 xml 파일이 있는 곳으로 바꿔주셔야 합니다.
xml파일을 addons/애드온명/queries/ 폴더에 넣어서 사용하실 경우는 addons.애드온명.getNextDivision 으로 되어야 겠죠.
그리고 만약 addons/애드온명 폴더 안에서 사용할 경우라면
다음글 {getDocumentDivision($oDocument->document_srl,'next','list_order')}
이전글 {getDocumentDivision($oDocument->document_srl,'prev','list_order')}
이런식으로 사용하세요.
---------------------
추가 설명 해드립니다.
제일 위의 소스파일은 제로XE/modules/document/document.model.php 의 제일 하단
/**
* @brief 문서 설정 정보를 구함
**/
function getDocumentConfig() {
if(!$GLOBLAS['__document_config__']) {
$oModuleModel = &getModel('module');
$config = $oModuleModel->getModuleConfig('document');
if(!$config->thumbnail_type) $config->thumbnail_type = 'crop';
$GLOBLAS['__document_config__'] = $config;
}
return $GLOBLAS['__document_config__'];
}
---- 요기 붙여넣기 해주세요 ----
}
?>
나머지 xml의 내용은 제목대로(getNextDivision.xml,getPrevDivision.xml) 각각 파일로 만드셔서
제로XE/modules/document/queries/ 폴더에 넣어주세요.
주의1. 꼭 파일 저장하실때(특히 XML) UTF-8로 저장하세요.
주의2. 안되면?? ㄷㄷㄷ;;;; 저는 됐습니다. 안되면 어쩔수 없이 물어보세요 ^^

function getDocumentDivision는 어느 파일에 넣어야 하는지요?
board 모듈에서 쓸려면(대다수 분들이 이러실것 같은데) 여기의 queries에다 xml 파일을 만들어서 넣으면 되나요?
오호~~감사합니다..대단합니다..정말///ㅜ,.ㅜ
이렇게 감사할수가 제가 그렇게 바라고 질문/답변에 그토록 고심했던부분을 이렇게 감사이 만들어 주셔서 감사합니다.
역시 라르게덴님께 축복과 영광을 멋져부려~~~~~
이왕 하신것 많은시간 안드신다면 애드원으로 만드시면 어떨까요 작지만 크게쓸수도 있으니깐요~~
너무 무리한 부탁이 아니시다면요 저도 지금 이 소스로 수정중입니다..^^
{@$oDivision = &getModel('document')}
다음글 {$oDivision->getDocumentDivision($oDocument->document_srl,'next','list_order')}
이전글 {$oDivision->getDocumentDivision($oDocument->document_srl,'prev','list_order')}
를 zbxe/modules/board/skins/스킨이름/list.html의 원하는 위치에 넣었지만 이전글 뒤에 이전글의 숫자만 나오고 별다른 변화는 없습니다.
그리고 함수 몇개 놓고 애드온으로 하는것도 좀 그렇다고 말씀하시면, 자바스크립트 하나 넣고 애드온으로 만든 저는 매우 쪽팔립니다(...)
그리고 list.html에는 document_srl(문서의 번호) 가 정의 되어있지 않기 때문에 이전글 다음글에는 적당하지 않다고 보고요.
view_document.html에
{@$oDivision = &getModel('document')}
<a href="{getUrl('document_srl',$oDivision->getDocumentDivision($oDocument->document_srl,'next','list_order'), 'listStyle', $listStyle, 'cpage','')}">이전글</a>
<a href="{getUrl('document_srl',$oDivision->getDocumentDivision($oDocument->document_srl,'prev','list_order'), 'listStyle', $listStyle, 'cpage','')}">다음글</a>
이렇게 쓰시면 되겠네요....
그리고 하다보니 next가 이전글이 되어버렸네요.. 이게 다음글 이라고 칭해야할까요?? ^^a
애드온으로 만들면 결국 배포해야하는데 그럴려면 제대로 만들 필요성이 있죠... 저도 도움을 줄까하는 차원에서 한건데 본격적으로 해보라하심은... ㅠㅠ
{@$oDivision = &getModel('document')}
<a href="{$oDivision->getDocumentDivision($oDocument->document_srl,'next','list_order')}">다음글</a>
<a href="{$oDivision->getDocumentDivision($oDocument->document_srl,'prev','list_order')}">이전글</a>
했는데 클릭하면 162번 게시물로 가버리네요 다음글 버튼도 이전글 버튼도 ...
비극적이군요...이번엔 뭘잘못했지/ㅡ./ㅡ;;;;
이제 잘 되네요..수고하셧습니다.
약간한 기능상 업그레이드가 있었으면 합니다...![]()
1. 게시판 운영중 공지를 쓴 경우.....상단에만 공지가 출력되지만 다음글 이전글에는 순서로 출력됩니다..공지사항 배제..
2. 이전글, 다음글이 없을시.....이전글 혹은 다음글 표시가 안되게....
이러면 완벽할것 같은데 말입니다....

좋은팁 정말 감사하구요...
너무너무 잘쓰겠읍니다....^^; 아주 잘되구요..나름 위처럼 버튼으로 수정했답니다...
zbxe/common/lang/ko.lang.php 파일에서 아래 붉은색추가하고
// 기본적으로 사용되는 action 언어
$lang->cmd_write = '쓰기';
$lang->cmd_reply = '답글';
$lang->cmd_delete = '삭제';
$lang->cmd_modify = '수정';
$lang->cmd_edit = '편집';
$lang->cmd_view = '보기';
$lang->cmd_view_all = '전체 보기';
$lang->cmd_list = '목록';
$lang->cmd_prev = '이전글';
$lang->cmd_next = '다음글';
zbxe/modules/board/skins/xe_board/view_document.html 파일에서 아래 붉은색부분을 추가하니
버튼식으로 이쁘게 되는군요 ...^^;
<!-- 목록, 수정/삭제 버튼 -->
<div class="contentButton">
{@$oDivision = &getModel('document')}
<a href="{getUrl('document_srl',$oDivision->getDocumentDivision($oDocument->document_srl,'next','list_order'), 'listStyle', $listStyle, 'cpage','')}" class="button"><span>{$lang->cmd_prev}</span></a>
<a href="{getUrl('document_srl',$oDivision->getDocumentDivision($oDocument->document_srl,'prev','list_order'), 'listStyle', $listStyle, 'cpage','')}" class="button"><span>{$lang->cmd_next}</span></a>
<!--@if($module_info->default_style != 'blog')-->
<a href="{getUrl('document_srl','')}" class="button"><span>{$lang->cmd_list}</span></a>
<!--@end-->
<!--@if($oDocument->isEditable())-->
<a href="{getUrl('act','dispBoardWrite','document_srl',$oDocument->document_srl,'comment_srl','')}" class="button"><span>{$lang->cmd_modify}</span></a>
<a href="{getUrl('act','dispBoardDelete','document_srl',$oDocument->document_srl,'comment_srl','')}" class="button"><span>{$lang->cmd_delete}</span></a>
<!--@end-->
</div>
老姜君님의 팁을 응용해서 아래와 같이 해 보니 잘 됩니다.
{@$oDivision = &getModel('document')}
{@$nextdocu = $oDivision->getDocumentDivision($oDocument->document_srl,'next','list_order')}
{@$prevdocu = $oDivision->getDocumentDivision($oDocument->document_srl,'prev','list_order')}
<!--@if($nextdocu->document_srl == "")--><!--@else--><a href="{$nextdocu->document_srl}" class="button"><span>{$lang->cmd_prev}</span></a><!--@end-->
<!--@if($prevdocu->document_srl == "")--><!--@else--><a href="{$prevdocu->document_srl}"class="button"><span>{$lang->cmd_next}</span></a><!--@end-->
다른말 할것 없고 아싸조쿠나입니다. 오뚝이님에게도 감사드립니다.
하지만 흔치 않은 기회를 잡은김에 더 뻔뻔해져서 질문을 드립니다(...) 물에 빠진놈 건져냈더니 보따리 내놓으라는 걸로 보이지만 말입니다.
예전에 제로보드4에서처럼.
이전글 : 이전글 제목 [이전글 코멘트 수] -이전글 글쓴이
다음글 : 다음글 제목 [다음글 코멘트 수] -다음글 글쓴이
처럼 나오게 할 방법은 없을까요? 현재 소스는 글 주소만 뽑아낼 수 있는것처럼 보입니다.
if($output->data) {
$data = array_pop($output->data);
$division_document = $data->document_srl;
--수정--
$division_document->document_srl = $data->document_srl;
$division_document->title = $data->title;
$division_document->nick_name = $data->nick_name;
.... 등등
}
return $division_document;
}
여기에 저 빨간 글자를 수정해주시면 됩니다.
Query상으로는 그 게시물 번호의 전체를 뽑아오기 때문에...
그리고 불러올때 좀 틀려집니다.
{@$oDivision = &getModel('document')}
{@$원하시는변수명 = $oDivision->getDocumentDivision($oDocument->document_srl,'next','list_order')}
{$원하시는변수명->document_srl}
{$원하시는변수명->title} 등등....
$division_document = $data->document_srl;
일때는 제대로 작동하는데,
$division_document->document_srl = $data->document_srl;
로 바꾸니까 화면이 아예 뜨지 않습니다? php 오류가 날때 화면이 뜨지 않는 경우가 있던데...
아마 다른 곳에도 수정을 더 해야 하는게 아닌가 생각됩니다. ...이거 너무 귀찮게 해드려서 정말 죄송합니다 =_=a
{@$oDivision = &getModel('document')}
{@$원하시는변수명 = $oDivision->getDocumentDivision($oDocument->document_srl,'next','list_order')}
{$원하시는변수명->document_srl}
{$원하시는변수명->title} 등등....
불러올때도 바꿔야 합니다. 소스만 바꾸시고 불러오는 곳에서 안바꾸시면 당연히 php오류로써 흰화면만 나오지요...
그리고 기타 궁금 사항은 쪽지 주시면 제가 특별히(?) 봐드릴게요 ^^





애드온으로 주시지 ..... 어떻게 하는지 모르겠군요 .....