코스모스팜 스레드

리스트 페이지에서 최신글 1개의 내용을 노출

리스트 페이지의 내용이 해당 게시판 첫번째 게시물의 내용이 보이게 하고 싶습니다.

+ 다른 글들은 리스트 형태로 하단에 뿌려주고 싶은데 (네이버 블로그처럼)

 

관련하여 조언좀 부탁드립니다.

===============================================================

※ 수정

내용 정리해서 support@cosmosfarm.com 여기로 메일보냈습니다.

시간이 가용된다면 확인 부탁드립니다.

무제한으로 웹사이트를 만드세요. (코스모스팜 무제한 라이센스)
무제한으로 웹사이트를 만드세요. (코스모스팜 무제한 라이센스)
  • 안녕하세요~^^

    KBoard 플러그인 게시판 목록 페이지에서 가장 최근 등록된 게시글을 상단에 표시하시려면

    워드프레스 관리자 -> 외모(테마 디자인) -> 사용자 정의하기 -> CSS 입력 필드에

    아래의 코드를 추가해보시겠어요?

    add_action('kboard_skin_header', 'my_kboard_skin_header', 10, 1);
    function my_kboard_skin_header($builder){
    	global $wpdb;
    	$board_id = '1'; // 실제 게시판 id로 적용해주세요.
    	$board = $builder->board;
    	
    	$result = $wpdb->get_row("SELECT `uid` FROM `{$wpdb->prefix}kboard_board_content` WHERE `board_id`='{$board_id}' AND (`status`='' OR `status` IS NULL OR `status`='pending_approval') ORDER BY `date` DESC");
    	$content = new KBContent();
    	$content->initWithUID($result->uid);
    	
    	$kboard_uid = kboard_uid();
    	$builder->uid = $kboard_uid ? $kboard_uid : $content->uid;
    	
    	if($board->id == $board_id && $content->uid && kboard_builder_mod() == 'list'){
    		$builder->builderDocument();
    	}
    }

    위의 코드에서 $board_id = '1' 부분은 실제 게시판 id로 적용해주세요.

     

    위의 코드와는 별개로

    KBoard 플러그인에서 리스트 항상 보기 기능을 지원하고 있습니다.

    워드프레스 관리자 -> KBoard -> 게시판 목록 -> 게시판 선택 -> 기본설정 페이지에서

    리스트 항상 보기를 활성화하시면 글 읽기 화면에서도 하단에 게시판 목록을 표시합니다.

     

    해당 설정이 안 보이거나 코드가 정상적으로 동작하지 않는다면

    KBoard 플러그인 버전을 확인해보세요.

    최신 버전이 아니라면 최신 버전으로 업데이트 부탁드립니다.

    업데이트 방법은 아래의 링크를 참고해보세요.

    KBoard(케이보드) 플러그인 업데이트 방법

    고맙습니다.

  • 도움 감사합니다.

    다만 이 상태에서는 게시물 상세페이지에서 다른 글 리스트가 안나오고,

    "리스트 항상보기"를 활성화 시킬 경우는 리스트페이지에서 리스트 2개가 중복되서 나오게 되네요

    관련하여 처리 방법좀 부탁드리겠습니다.

     

     

  • 리스트 항상 보기 설정 활성화 시 중복 표시되는 문제는

    테마 쪽 functions.php 파일 하단에 아래의 코드도 추가해보시겠어요?

    add_filter('kboard_always_view_list', 'my_kboard_always_view_list', 10, 2);
    function my_kboard_always_view_list($always_view_list, $this){
    	if(kboard_builder_mod() == 'list'){
    		$always_view_list = false;
    	}
    	return $always_view_list;
    }

    이전 댓글에 안내해드린 코드에 버그가 있어 수정해두었으니

    바뀐 코드로 적용해보시겠어요?

    고맙습니다.

  • 안내해주신대로 하니 잘 됩니다.

    다만 염치불구하고 한가지 부탁드릴게 있는데요.

    해당 수정사항은 한번만 사용하는게 아니라 다른 게시판에도 적용을 해야되는지라

    function에 id 값을 넣는건 비효율적인것 같고, 이것을 쇼코드로 재작업해서 하니 또 내용물이 노출안되는 문제가 생기더군요

     

    안내해주신 코드를 숏코드 or 다른 게시판에도 범용적으로 사용(ex: 특정 SKIN 일 때) 할 수 있도록 조언좀 부탁드립니다.

  • 특정 스킨에만 적용하는 코드를 안내해드리겠습니다.

    기존의 kboard_skin_header 쪽 코드 대신 아래의 코드로 교체해보시겠어요?

    add_action('kboard_skin_header', 'my_kboard_skin_header', 10, 1);
    function my_kboard_skin_header($builder){
    	global $wpdb;
    	$board = $builder->board;
    	
    	if($board->skin == 'default' && kboard_builder_mod() == 'list'){
    		$result = $wpdb->get_row("SELECT `uid` FROM `{$wpdb->prefix}kboard_board_content` WHERE `board_id`='{$board->id}' AND (`status`='' OR `status` IS NULL OR `status`='pending_approval') ORDER BY `date` DESC");
    		if($result){
    			$content = new KBContent();
    			$content->initWithUID($result->uid);
    			
    			$kboard_uid = kboard_uid();
    			$builder->uid = $kboard_uid ? $kboard_uid : $content->uid;
    			
    			if($content->uid){
    				$builder->builderDocument();
    			}
    		}
    	}
    }

    위의 코드는 default 스킨일 때만 동작합니다.

    다른 스킨으로 적용하시려면 'default' 부분을 다른 스킨명으로 교체해보세요.

    고맙습니다.

  • 감사합니다.

    도움주신 덕분에 원하는대로 결과가 나옵니다.

    마지막으로 조금더 다듬고 싶은 부분이 있는데..

    디버그 모드 상태에서 글이 없을 시 오류 메시지가 노출되더군요

    게시물 존재 여부를 체크해서 자체적으로 수정해보려고 했으나 잘 안되네요...

     

    도움좀 부탁드립니다.

  • 버그가 있었군요.

    이전 댓글에 안내해드린 코드를 개선해서 수정해두었습니다.

    다시 적용해보시겠어요?

    고맙습니다.

  • 원하는대로 100% 구현되었습니다.

    감사합니다!

이미지 사진은 imgur에 업로드한 뒤 링크 걸어주세요.
무제한으로 웹사이트를 만드세요. (코스모스팜 무제한 라이센스)