안녕하세요 그누 초보 질문 드립니다
본문
안녕하세요 그누 초보 질문드립니다.
test 게시판에서 다른 게시판의 글들을 불러오고 싶은데 힌트 좀 얻을 수 있을까요?
예를 들어 test게시판 에서 test1,test2게시판의 게시물들을 불러와 리스트에 출력되도록 싶습니다
test게시판에서 test,test1,test2 게시물을 한번에 볼수 있도록 말이죠.
답변 2
여러게시판의 글을 그룹화하여 불러오거나 특정 게시판만 가져오는걸
'최신글' 이라는 기능으로 가져올 수 있습니다.
https://sir.kr/g5_skin?sca=%EC%B5%9C%EC%8B%A0%EA%B8%80&sfl=wr_subject&stx=%EA%B7%B8%EB%A3%B9
아래 스킨자료실의 내용을 채크해보세요.
test 게시판에서 test1, test2 게시판의 게시물을 한 화면에서 출력하려면,
그누보드의 latest.lib.php를 활용하여 각 게시판의 데이터를 통합한 후,
list.skin.php에 커스터마이징된 로직을 추가해 구현할 수 있습니다.
- 필요 시 /lib/latest.lib.php를 확장하여 추가 기능을 구현할 수도 있음.
※ 구현 방안 ※
1. latest.lib.php를 활용한 데이터 호출:
test 게시판의 list.skin.php에서 latest() 함수를 사용하여
test1, test2 게시판의 게시물을 가져옴
<?php
// test1, test2 게시판에서 최신 글 각각 5개씩 가져오기
echo latest("basic", "test1", 5);
echo latest("basic", "test2", 5);
?>
2. list.skin.php의 수정:
/bbs/skin/board/basic/list.skin.php 파일에서
데이터 출력 로직을 수정하여 여러 게시판의 글을 통합 출력하도록 구현.
3. 파일 경로 및 수정:
*/lib/latest.lib.php: 최신글 호출 함수의 핵심 파일.
커스터마이징이 필요하다면 이 파일을 확인하고 수정할 수 있음.
*/bbs/skin/board/basic/list.skin.php: 게시판 출력 디자인을 담당하는 파일로,
이곳에서 여러 게시판 데이터를 출력하는 로직을 추가.
※ 예시 코드 적용 구조
/lib/latest.lib.php
/bbs/skin/board/basic/list.skin.php
/bbs/board.php
= = = = = = = = =
"""test게시판에서 test,test1,test2 게시물을 한번에 볼수 있도록 말이죠."""
님의 질문에 더 접근하여 보자면 ~
여러 게시판(test, test1, test2)의 글을 test 게시판에서 조회하도록 구현.
1. /lib/latest.lib.php 활용하여
여러 게시판의 글을 병합하여 가져오는 SQL 쿼리를 작성
// 여러 게시판의 데이터를 병합하여 최신 글을 가져오는 함수
function latest_multi_board($skin_dir, $board_list, $rows = 10) {
global $g5;
$sql_union = [];
foreach ($board_list as $board) {
$sql_union[] = "SELECT '{$board}' AS bo_table, wr_id, wr_subject, wr_datetime FROM {$g5['write_prefix']}{$board}";
}
$sql = "
SELECT bo_table, wr_id, wr_subject, wr_datetime
FROM (" . implode(" UNION ALL ", $sql_union) . ") as multi_boards
ORDER BY wr_datetime DESC
LIMIT {$rows}
";
return sql_query($sql);
}
2. /skin/board/basic/list.skin.php 수정
<?php
$board_list = ['test', 'test1', 'test2'];
$result = latest_multi_board('basic', $board_list, 10);
while ($row = sql_fetch_array($result)) {
echo "<li>[{$row['bo_table']}] <a href='/bbs/board.php?bo_table={$row['bo_table']}&wr_id={$row['wr_id']}'>{$row['wr_subject']}</a> ({$row['wr_datetime']})</li>";
}
?>
test 게시판에서 다른 게시판(test1, test2)의 글을 조회하여 출력하도록 로직 추가
3. 적용 구성
/lib/latest.lib.php
/bbs/board.php
/skin/board/basic/list.skin.php
이 구성을 통해 test 게시판에서 다른 게시판의 게시물을 불러와 리스트에 출력할 수 있습니다. 프로젝트 구조와 기존 로직에 맞게 커스터마이징만 하면 바로 적용 가능합니다.
!-->!-->!-->