안녕하세요~ 두가지 질문이 있습니다.
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 > >>
의 형태로 수정하고자 합니다. 어디서 수정할 수 있을까요?
기능은 윗줄 그대로고 텍스트모양만 바꾸려고 합니다~
안녕하세요~^^
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 플러그인을 사용해서 코드를 추가할 수 있습니다.
고맙습니다.
// 좌우 이동 화살표 «, »를 출력한다.
// 처음과 마지막 페이지가 아니라면 링크를 걸어주면 된다.
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페이지에서 다음버튼을 누르면 발생하는 문제입니다.
올려주신 코드 대신
아래의 코드로 교체해서 확인해보시겠어요?
// 좌우 이동 화살표 «, »를 출력한다.
// 처음과 마지막 페이지가 아니라면 링크를 걸어주면 된다.
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>";
}
}
고맙습니다.
안녕하세요.
답변 감사합니다.
그런데 새로 주신 코드를 적용하니 1페이지 외에는 다음버튼이 보이질 않는 현상이 있습니다. ㅜㅜ
이전 댓글에 안내해드린 코드를
저희 쪽 테스트 서버에 적용하면
1페이지 외에 총페이지수 > 현재페이지+5인 페이지에서는 정상적으로 표시됩니다.
다른 코드를 잘못 수정한 건 아닌지 확인해보셔야 할 듯합니다.
디버그 모드를 활성화해서 오류 메시지가 있는지 확인해보시겠어요?
고맙습니다.
<?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~이후 페이지로 넘어갈 방법이 아예 없습니다.
마지막페이지로 가는 버튼도 함께 사라집니다.
이동할 페이지가 총페이지수보다 많다면
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
고맙습니다.
감사합니다. 잘 적용했습니다.