리스트 페이지의 내용이 해당 게시판 첫번째 게시물의 내용이 보이게 하고 싶습니다.
+ 다른 글들은 리스트 형태로 하단에 뿌려주고 싶은데 (네이버 블로그처럼)
관련하여 조언좀 부탁드립니다.
===============================================================
※ 수정
내용 정리해서 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 플러그인 버전을 확인해보세요.
최신 버전이 아니라면 최신 버전으로 업데이트 부탁드립니다.
업데이트 방법은 아래의 링크를 참고해보세요.
고맙습니다.
도움 감사합니다.
다만 이 상태에서는 게시물 상세페이지에서 다른 글 리스트가 안나오고,
"리스트 항상보기"를 활성화 시킬 경우는 리스트페이지에서 리스트 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% 구현되었습니다.
감사합니다!
위 코드 참고하여 적용해 보았습니다.
잘 작동하고 있는데 한 가지 이상을 발견했습니다.
새글을 작성하려고 하면 가장 마지막 글의 수정 페이지로 들어가게 됩니다.
방법이 없을 까요?
위 코드를 적용했습니다.
저도 새글을 작성하려고 했을 때, 가장 최신글의 수정 페이지로 넘어갑니다.
이 부분은 해결 방법이 있을까요?