안녕하세요~ 두가지 질문이 있습니다.
1.
페이지리스트를 기존10개에서 5개로 수정했습니다.
FTP로 접속해서 /wp-content/plugins/kboard/helper/Pagination.helper.php 파일에서
$sliding_size = apply_filters('kboard_pagination_sliding_size', 10);
$sliding_size = intval($sliding_size);
if(!$sliding_size || $sliding_size<=0){
$sliding_size = 10;
}
10을 2개 전부 5로 바꾸었습니다.
<< 1 2 3 4 5 >>
해서 페이지 리스트에서 화살표버튼을 눌렀을 때 +-1 페이지가 아니라 5페이지씩 이동했으면 합니다.
// 좌우 이동 화살표 «, »를 출력한다.
// 처음과 마지막 페이지가 아니라면 링크를 걸어주면 된다.
if($current_page != 1){
$prev_page = $current_page - 1;
$paging = "<li class=\"first-page\"><a href=\"?pageid=1{$query_strings}\">{$text['fist']}</a></li>" . "<li class=\"prev-page\"><a href=\"?pageid={$prev_page}{$query_strings}\">{$text['prev']}</a></li>{$paging}";
}
if($current_page != $total_page){
$next_page = $current_page + 1;
$paging = "{$paging}<li class=\"next-page\"><a href=\"?pageid={$next_page}{$query_strings}\">{$text['next']}</a></li>" . "<li class=\"last-page\"><a href=\"?pageid={$total_page}{$query_strings}\">{$text['last']}</a></li>";
}
위의 코드에서 -1 +1 의 숫자를 5로 바꾸면
페이지수가 충분할 때는 잘 작동하나 남은페이지가 5페이지 이하일 경우, 리스트가 사라지고 1페이지만 남는 현상이 있습니다.
남은 페이지가 5페이지 이하일 경우에는 마지막 페이지로 이동하거나
버튼자체가 활성화되지 않게 할 수 있을까요?
2.
처음 << 1 2 3 4 5 >> 마지막
위의 형태에서
<< < 1 2 3 4 5 > >>
의 형태로 수정하고자 합니다. 어디서 수정할 수 있을까요?
기능은 윗줄 그대로고 텍스트모양만 바꾸려고 합니다~
감사합니다. 잘 적용했습니다.
이동할 페이지가 총페이지수보다 많다면
5개씩 넘어가는 부분은 1개씩 넘어가도록 수정해야할 듯합니다.
아래의 코드로 교체해서도 확인해보시겠어요?
// 좌우 이동 화살표 «, »를 출력한다.
// 처음과 마지막 페이지가 아니라면 링크를 걸어주면 된다.
if($current_page != 1){
$prev_page = $current_page - 5;
$paging = "<li class=\"first-page\"><a href=\"?pageid=1{$query_strings}\">{$text['fist']}</a></li>" . "<li class=\"prev-page\"><a href=\"?pageid={$prev_page}{$query_strings}\">{$text['prev']}</a></li>{$paging}";
}
if($current_page != $total_page && $total_page > 5){
$next_page = $current_page + 5;
if($next_page > $total_page){
$next_page = $current_page + 1;
}
$paging = "{$paging}<li class=\"next-page\"><a href=\"?pageid={$next_page}{$query_strings}\">{$text['next']}</a></li>" . "<li class=\"last-page\"><a href=\"?pageid={$total_page}{$query_strings}\">{$text['last']}</a></li>";
}
커뮤니티에서는 저희가 모든 코드를 일일이 만들어드리는 건 현실적으로 불가능합니다.
직접 코드를 수정하기 어려우시다면
프로젝트 의뢰에 상세 내용을 올려보시겠어요?
https://www.cosmosfarm.com/project
고맙습니다.
<?php
if(!defined('ABSPATH')) exit;
/**
* KBoard 워드프레스 게시판 페이지 출력 함수
* @link www.cosmosfarm.com
* @copyright Copyright 2020 Cosmosfarm. All rights reserved.
* @license http://www.gnu.org/licenses/gpl.html
*/
function kboard_pagination($current_page, $total, $limit, $args=array(), $text=array()){
if(!is_array($args)){
$args = array();
}
$args = array_merge($_GET, $args);
foreach($args as $key=>$value){
if(is_array($value)){
$query_strings[] = http_build_query(array(sanitize_key($key)=>$value));
}
else if($key == 'mod'){
if(!in_array($value, array('list', 'history', 'sales'))){
$value = 'list';
}
$query_strings[] = "mod={$value}";
}
else if($key != 'pageid' && $value){
$query_strings[] = sanitize_key($key).'='.urlencode(kboard_htmlclear($value));
}
}
if(isset($query_strings) && $query_strings) $query_strings = '&' . implode('&', $query_strings);
else $query_strings = '';
$sliding_size = apply_filters('kboard_pagination_sliding_size', 5);
$sliding_size = intval($sliding_size);
if(!$sliding_size || $sliding_size<=0){
if(wp_is_mobile()){
$sliding_size = 5;
}
else{
$sliding_size = 5;
}
}
$total_page = ceil($total/$limit);
$paging = '';
$i = 0;
if($current_page > $sliding_size){
$i = ($current_page-1) - (($current_page-1) % $sliding_size);
}
// offset은 윈도의 마지막 페이지 번호다.
$offset = $i + $sliding_size;
// 윈도의 시작 $i 부터, 윈도우 마지막 까지 출력한다.
for($i; $i<$offset && $i<$total_page; $i++){
$page_name = $i + 1;
// 링크는 적당히 수정
if($current_page != $page_name){
$paging .= "<li><a href=\"?pageid={$page_name}{$query_strings}\">{$page_name}</a></li>";
}
else{
$paging .= "<li class=\"active\"><a href=\"?pageid={$page_name}{$query_strings}\" onclick=\"return false\">{$page_name}</a></li>";
}
}
// 페이징에 출력할 텍스트 필터
$text = apply_filters('kboard_pagination_text', $text);
if(!is_array($text)){
$text = array();
}
// 기본 텍스트 설정
if(!isset($text['fist']) || !$text['fist']){
$text['fist'] = __('First', 'kboard');
}
if(!isset($text['prev']) || !$text['prev']){
$text['prev'] = '«';
}
if(!isset($text['last']) || !$text['last']){
$text['last'] = __('Last', 'kboard');
}
if(!isset($text['next']) || !$text['next']){
$text['next'] = '»';
}
// 좌우 이동 화살표 «, »를 출력한다.
// 처음과 마지막 페이지가 아니라면 링크를 걸어주면 된다.
if($current_page != 1){
$prev_page = $current_page - 5;
$paging = "<li class=\"first-page\"><a href=\"?pageid=1{$query_strings}\">{$text['fist']}</a></li>" . "<li class=\"prev-page\"><a href=\"?pageid={$prev_page}{$query_strings}\">{$text['prev']}</a></li>{$paging}";
}
if($current_page != $total_page && $total_page > 5){
$next_page = $current_page + 5;
if($next_page < $total_page){
$paging = "{$paging}<li class=\"next-page\"><a href=\"?pageid={$next_page}{$query_strings}\">{$text['next']}</a></li>" . "<li class=\"last-page\"><a href=\"?pageid={$total_page}{$query_strings}\">{$text['last']}</a></li>";
}
}
return $total ? $paging : '<li class="active"><a href="#" onclick="return false">1</a></li>';
}
pagination.helper.php 파일 전체내용입니다.
한번만 확인 부탁드립니다 ㅜㅜ
총페이지수 < 현재페이지+5인 페이지에서 다음버튼이 나오질 않으면
6~이후 페이지로 넘어갈 방법이 아예 없습니다.
마지막페이지로 가는 버튼도 함께 사라집니다.
이전 댓글에 안내해드린 코드를
저희 쪽 테스트 서버에 적용하면
1페이지 외에 총페이지수 > 현재페이지+5인 페이지에서는 정상적으로 표시됩니다.
다른 코드를 잘못 수정한 건 아닌지 확인해보셔야 할 듯합니다.
디버그 모드를 활성화해서 오류 메시지가 있는지 확인해보시겠어요?
고맙습니다.
안녕하세요.
답변 감사합니다.
그런데 새로 주신 코드를 적용하니 1페이지 외에는 다음버튼이 보이질 않는 현상이 있습니다. ㅜㅜ
올려주신 코드 대신
아래의 코드로 교체해서 확인해보시겠어요?
// 좌우 이동 화살표 «, »를 출력한다.
// 처음과 마지막 페이지가 아니라면 링크를 걸어주면 된다.
if($current_page != 1){
$prev_page = $current_page - 5;
$paging = "<li class=\"first-page\"><a href=\"?pageid=1{$query_strings}\">{$text['fist']}</a></li>" . "<li class=\"prev-page\"><a href=\"?pageid={$prev_page}{$query_strings}\">{$text['prev']}</a></li>{$paging}";
}
if($current_page != $total_page && $total_page > 5){
$next_page = $current_page + 5;
if($next_page < $total_page){
$paging = "{$paging}<li class=\"next-page\"><a href=\"?pageid={$next_page}{$query_strings}\">{$text['next']}</a></li>" . "<li class=\"last-page\"><a href=\"?pageid={$total_page}{$query_strings}\">{$text['last']}</a></li>";
}
}
고맙습니다.
// 좌우 이동 화살표 «, »를 출력한다.
// 처음과 마지막 페이지가 아니라면 링크를 걸어주면 된다.
if($current_page != 1){
$prev_page = $current_page - 5;
$paging = "<li class=\"first-page\"><a href=\"?pageid=1{$query_strings}\">{$text['fist']}</a></li>" . "<li class=\"prev-page\"><a href=\"?pageid={$prev_page}{$query_strings}\">{$text['prev']}</a></li>{$paging}";
}
if($current_page != $total_page && $total_page > 5){
$next_page = $current_page + 5;
$paging = "{$paging}<li class=\"next-page\"><a href=\"?pageid={$next_page}{$query_strings}\">{$text['next']}</a></li>" . "<li class=\"last-page\"><a href=\"?pageid={$total_page}{$query_strings}\">{$text['last']}</a></li>";
}
1.
이렇게 수정했는데 여전히 같은 문제가 발생합니다.
예를들어 페이지가 총 7개인데 3페이지에서 다음버튼을 누르면 발생하는 문제입니다.
안녕하세요~^^
1. KBoard 플러그인 페이징에서 이전, 다음 버튼을 5페이지씩 적용하실 때
다음 버튼을 5페이지 보다 적은 경우 표시되지 않게 하시려면
Pagination.helper.php 파일에
아래의 코드를 찾아서
$current_page != $total_page
아래의 코드로 교체해보세요.
$current_page != $total_page && $total_page > 5
2. 아래의 코드를 추가하시면
KBoard 페이징에서 이전, 다음, 처음, 마지막 문구나 기호를 편집하실 수 있습니다.
add_filter('kboard_pagination_text', 'kboard_pagination_text_20210517', 10, 1);
function kboard_pagination_text_20210517($text){
$text['fist'] = '처음';
$text['prev'] = '이전';
$text['next'] = '다음';
$text['last'] = '마지막';
return $text;
}
각 문구는 적절히 교체해보세요.
테마의 functions.php 파일에 코드를 추가하거나 Code Snippets 플러그인을 사용해서 코드를 추가할 수 있습니다.
고맙습니다.