웹마스터 팁
이전글, 다음글 코어 건드리지 않고 사용하기 (모듈X, 애드온X) (업데이트)
2013.01.26 17:02
라르게덴님의 이전글, 다음글 가져오는 소스를 봤는데 제가 코어를 건드리는걸 별로 안좋아해서
그냥 제 방식대로 게시판 스킨에서 바로 쓸 수 있게 만들어봤습니다.
필요하신 분은 쓰세요.
* 발코딩이므로 코드해석하려고 하시면 정신건강에 해로우니 해석하려고 하지마세요.
{@$doc_count = count($document_list)} {@$z=0} <!--@foreach($document_list as $no => $document)--> {@ $doc_srl[$z] = $document->document_srl} <!--@if($document->document_srl == $oDocument->document_srl)--> {@ $now_z = $z } <!--@end--> {@$z++;} <!--@end--> <!--@if($now_z == 0 && $page > 1)--> {@ $oModuleModel = &getModel('module'); $module_srl_temp = $oModuleModel->getModuleSrlByMid($mid); if(is_array($module_srl_temp)) $module_srl = $module_srl_temp[0]; else $module_srl = $module_srl_temp; $args->module_srl = $module_srl; $args->category_srl = $category_srl; $args->list_count = $module_info->list_count; $args->search_target = $search_target; $args->search_keyword = $search_keyword; $args->page = $page-1; $args->sort_index = $module_info->sort_index; $args->order_type = $module_info->order_type; $docList_output = executeQueryArray('document.getDocumentList', $args); } {@$x=0} <!--@foreach($docList_output->data as $doc)--> <!--@if($x == count($docList_output->data) - 1)--> {@ $beforeDoc = $doc->document_srl } <!--@end--> {@$x++;} <!--@end--> {@ $afterDoc = $doc_srl[$now_z+1] } <!--@else if($now_z == $doc_count - 1 && $page < $total_page)--> {@ $oModuleModel = &getModel('module'); $module_srl_temp = $oModuleModel->getModuleSrlByMid($mid); if(is_array($module_srl_temp)) $module_srl = $module_srl_temp[0]; else $module_srl = $module_srl_temp; $args->module_srl = $module_srl; $args->category_srl = $category_srl; $args->list_count = $module_info->list_count; $args->search_target = $search_target; $args->search_keyword = $search_keyword; $args->page = $page+1; $args->sort_index = $module_info->sort_index; $args->order_type = $module_info->order_type; $docList_output = executeQueryArray('document.getDocumentList', $args); } {@$x=0} <!--@foreach($docList_output->data as $doc)--> <!--@if($x == 0)--> {@ $afterDoc = $doc->document_srl } <!--@end--> {@$x++;} <!--@end--> {@ $beforeDoc = $doc_srl[$now_z-1] } <!--@else--> {@ $beforeDoc = $doc_srl[$now_z-1]; $afterDoc = $doc_srl[$now_z+1]; } <!--@end--> <!--@if(!$beforeDoc)--> {@ $beforeDoc = $oDocument->document_srl } <!--@else if(!$afterDoc)--> {@ $afterDoc = $oDocument->document_srl } <!--@end--> <a href="{getUrl('document_srl',$beforeDoc,'listStyle',$listStyle, 'cpage','', 'page', '')}">이전글</a> <a href="{getUrl('document_srl',$afterDoc,'listStyle',$listStyle, 'cpage','', 'page', '')}">다음글</a>
$beforeDoc은 이전글
$afterDoc은 다음글
사용하실려면 윗처럼 getUrl 에서 page 값을 빈값('')처리 해줘야 합니다.
14.07.15
팁을 올리고 나서 생각보다 반응이 좋아서 코드를 약간 업데이트 해서 다시 올립니다. 참고 하시라고 주석도 조금 달아봤습니다.
많은 도움이 됬으면 합니다!
<!-- 이전글, 다음글 구하기 : s --> {@$doc_count = count($document_list)} {@$z=0} <!--@foreach($document_list as $no => $document)--> {@ $doc_srl[$z] = $document->document_srl} <!--@if($document->document_srl == $oDocument->document_srl)--> {@ $now_z = $z } <!--@end--> {@$z++;} <!--@end--> <!-- 현재 글이 현제 페이지에서 첫번째 글이며, 현재 페이지가 1이 아닐 때 --> <!-- 이전 페이지의 document_list를 가져와서 마지막 글의 document_srl을 구한다 --> <!--@if($now_z == 0 && $page > 1)--> {@ $oModuleModel = &getModel('module'); $module_srl_temp = $oModuleModel->getModuleSrlByMid($mid); if(is_array($module_srl_temp)) $module_srl = $module_srl_temp[0]; else $module_srl = $module_srl_temp; $args->module_srl = $module_srl; $args->category_srl = $category_srl; $args->list_count = $module_info->list_count; $args->search_target = $search_target; $args->search_keyword = $search_keyword; $args->page = $page-1; $args->sort_index = $module_info->sort_index; $args->order_type = $module_info->order_type; $docList_output = executeQueryArray('document.getDocumentList', $args); } {@$x=0} <!--@foreach($docList_output->data as $doc)--> <!--@if($x == count($docList_output->data) - 1)--> {@ $beforeDoc = $doc->document_srl } <!--@end--> {@$x++;} <!--@end--> {@ $afterDoc = $doc_srl[$now_z+1] } <!-- 현재 글이 현제 페이지에서 가장 마지막 글이며, 현재 페이지가 마지막 페이지가 아닐 때 --> <!-- 다음 페이지의 document_list를 가져와서 첫번째 글의 document_srl을 구한다 --> <!--@else if($now_z == $doc_count - 1 && $page < $total_page)--> {@ $oModuleModel = &getModel('module'); $module_srl_temp = $oModuleModel->getModuleSrlByMid($mid); if(is_array($module_srl_temp)) $module_srl = $module_srl_temp[0]; else $module_srl = $module_srl_temp; $args->module_srl = $module_srl; $args->category_srl = $category_srl; $args->list_count = $module_info->list_count; $args->search_target = $search_target; $args->search_keyword = $search_keyword; $args->page = $page+1; $args->sort_index = $module_info->sort_index; $args->order_type = $module_info->order_type; $docList_output = executeQueryArray('document.getDocumentList', $args); } {@$x=0} <!--@foreach($docList_output->data as $doc)--> <!-- 첫번째 글일 경우 --> <!--@if($x == 0)--> {@ $afterDoc = $doc->document_srl } <!--@end--> {@$x++;} <!--@end--> {@ $beforeDoc = $doc_srl[$now_z-1] } <!-- 그 외 --> <!--@else--> {@ $beforeDoc = $doc_srl[$now_z-1]; $afterDoc = $doc_srl[$now_z+1]; } <!--@end--> <!--@if($beforeDoc)--> {@ $beforeHref = getUrl('document_srl',$beforeDoc,'listStyle',$listStyle, 'cpage','', 'page', '') } <!--@else--> {@ $beforeHref = "javascript:;" } <!--@end--> <!--@if($afterDoc)--> {@ $afterHref = getUrl('document_srl',$afterDoc,'listStyle',$listStyle, 'cpage','', 'page', '') } <!--@else--> {@ $afterHref = "javascript:;" } <!--@end--> <!-- 이전글, 다음글 구하기 : e --> <style> a#prevDocBtn, a#nextDocBtn { border: 1px solid green } a#prevDocBtn.disabled, a#nextDocBtn.disabled { border: 1px solid red; cursor: text } </style> <a href="{$beforeHref}" id="prevDocBtn" class="disabled"|cond="!$beforeDoc">이전글</a> <a href="{$afterHref}" id="nextDocBtn" class="disabled"|cond="!$afterDoc">다음글</a>
이전글이 없거나 다음글이 없을 경우 자동으로 버튼이 disable 됩니다. 스타일화 하시려면 <style> 부분을 활용하시길^^;
댓글 8
-
LI-NA
2013.01.26 17:07
-
닉이
2013.01.27 01:06
좋은팁감사합니다~^^
-
powerman
2013.01.27 18:35
이것을 어떻게 쓰나요?
초보들을위해 자세히 설명 부탁드려요..
-
닉이
2013.01.27 19:25
xe_board기준으로 설명드리면 view_document.html에 원하는 위치에 붙여넣기하시면 됩니다.
xe_board 수정파일도 같이 첨부하였으니 보시고 참고하세요
-
powerman
2013.02.04 01:46
감사합니다.
-
eru1504
2013.01.28 23:50
감사합니다.
-
oksky
2013.12.13 12:10
이 팁은 '게시물 목록 수'가 1일때, '다음글'을 얻어오지 못하는 문제가 있네요,,
어디를 어떻게 바꿔야 하나 고민고민중입니다,,
-
시니시즘
2014.07.14 16:22
업데이트 해드렸습니다. 참고 하세요^^;
제목 | 글쓴이 | 날짜 |
---|---|---|
빈공간 더블 클릭시 상하 이동 스크립트 | socialskyo | 2014.07.23 |
이메일인증 Error 한방정리 참고해보세요. [4] | 애드바이러스 | 2014.02.12 |
로그인 안하면 코멘트 볼 수 없게 스킨 수정하는 법 [3] | W.O | 2014.03.23 |
회원 비밀번호 수정시 자동으로 로그아웃 되게 하는 방법 [4] | sejin7940 | 2014.07.18 |
특정 확장변수를 글 추천자에게만 보이게 하기 [10] | 뮤랑이 | 2010.01.11 |
관리자만 글 등록이 되고, 일반 유저는 글 등록버튼을 누르면 아무런 반응이 없을 때. [1] | whitemind | 2013.11.07 |
모바일(또는 textarea형)에서 댓글 수정시 줄바꿈 유지되도록 수정 [2] | sejin7940 | 2014.07.17 |
댓글등록에 단축키 사용하기 | ひりゅう. | 2014.07.15 |
이전글, 다음글 코어 건드리지 않고 사용하기 (모듈X, 애드온X) (업데이트) [8] | 시니시즘 | 2013.01.26 |
SocialXE 관련 사용팁 적용 수정 파일 [3] | 휘즈 | 2014.07.13 |
외부 페이지에서 회원 extra_vars 변수 가져오기 [1] | Happyphp | 2014.07.09 |
특정게시판, 비밀글로 작성하기 (대암지기님 팁 보완) [9] | 된장맛껌 | 2010.03.17 |
게시판 접속시에 첫(제일 최근) 게시물이 보여지게 하기 [16] | foret | 2014.03.08 |
편리한 안드로이드 크로스 브라우징 테스트 Tip - 안드로이드 가상화 | AJKJ | 2014.07.09 |
htm과 html의 차이는 ? | 디테일 | 2014.06.17 |
1.7 버전 사이트 메뉴 편집 사용법 [4] | 휘즈 | 2013.07.27 |
MRTG에서 네트워크및 CPU, 메모리점유율을 기록하기 | ひりゅう. | 2014.07.05 |
XE 왕초보를 위한 글 [13] | 휘즈 | 2009.08.06 |
php 세션을 memcache에 저장할 때 주의할 점 | XE러버 | 2014.07.04 |
클리어픽스(clearfix)의 개념과 방법 | 시니시즘 | 2014.07.04 |
오오.. 좋은 팁이군요!
감사합니다.