리스트 페이지의 내용이 해당 게시판 첫번째 게시물의 내용이 보이게 하고 싶습니다.
+ 다른 글들은 리스트 형태로 하단에 뿌려주고 싶은데 (네이버 블로그처럼)
관련하여 조언좀 부탁드립니다.
===============================================================
※ 수정
내용 정리해서 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 플러그인 버전을 확인해보세요.
최신 버전이 아니라면 최신 버전으로 업데이트 부탁드립니다.
업데이트 방법은 아래의 링크를 참고해보세요.
고맙습니다.
위 코드 참고하여 적용해 보았습니다.
잘 작동하고 있는데 한 가지 이상을 발견했습니다.
새글을 작성하려고 하면 가장 마지막 글의 수정 페이지로 들어가게 됩니다.
방법이 없을 까요?
원하는대로 100% 구현되었습니다.
감사합니다!
버그가 있었군요.
이전 댓글에 안내해드린 코드를 개선해서 수정해두었습니다.
다시 적용해보시겠어요?
고맙습니다.
감사합니다.
도움주신 덕분에 원하는대로 결과가 나옵니다.
마지막으로 조금더 다듬고 싶은 부분이 있는데..
디버그 모드 상태에서 글이 없을 시 오류 메시지가 노출되더군요
게시물 존재 여부를 체크해서 자체적으로 수정해보려고 했으나 잘 안되네요...
도움좀 부탁드립니다.
특정 스킨에만 적용하는 코드를 안내해드리겠습니다.
기존의 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' 부분을 다른 스킨명으로 교체해보세요.
고맙습니다.
안내해주신대로 하니 잘 됩니다.
다만 염치불구하고 한가지 부탁드릴게 있는데요.
해당 수정사항은 한번만 사용하는게 아니라 다른 게시판에도 적용을 해야되는지라
function에 id 값을 넣는건 비효율적인것 같고, 이것을 쇼코드로 재작업해서 하니 또 내용물이 노출안되는 문제가 생기더군요
안내해주신 코드를 숏코드 or 다른 게시판에도 범용적으로 사용(ex: 특정 SKIN 일 때) 할 수 있도록 조언좀 부탁드립니다.
리스트 항상 보기 설정 활성화 시 중복 표시되는 문제는
테마 쪽 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;
}
이전 댓글에 안내해드린 코드에 버그가 있어 수정해두었으니
바뀐 코드로 적용해보시겠어요?
고맙습니다.
도움 감사합니다.
다만 이 상태에서는 게시물 상세페이지에서 다른 글 리스트가 안나오고,
"리스트 항상보기"를 활성화 시킬 경우는 리스트페이지에서 리스트 2개가 중복되서 나오게 되네요
관련하여 처리 방법좀 부탁드리겠습니다.
위 코드를 적용했습니다.
저도 새글을 작성하려고 했을 때, 가장 최신글의 수정 페이지로 넘어갑니다.
이 부분은 해결 방법이 있을까요?