비너스 웹진 게시판 리스트내 페이지버튼 관련

안녕하세요~ 두가지 질문이 있습니다.

 

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

    고맙습니다.

  • 감사합니다. 잘 적용했습니다. 

이미지 사진은 imgur에 업로드한 뒤 링크 걸어주세요.
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기