[최신글 5/13] 사용 예제 ② 데이터로 직접 출력·게시판 합치기 — DXCMS
키워드: dx_board_posts, 배열, 반환값, 직접 출력, 여러 게시판 합치기, 공지 포함 표기: (소스)=코드 확인·실행 검증, (README)=README 기재, (일반)=일반 지식
스킨 없이 데이터만 받아 원하는 HTML 로 출력할 때 dx_board_posts() 를 씁니다.
형식 (소스)
dx_board_posts($boardKey, $limit=5, $withNotice=false, $titleLen=0, $excerptLen=100)
- $withNotice=true 면 공지 포함, $excerptLen=0 이면 발췌 계산 안 함
반환 배열의 항목 (실행 확인)
id, title, is_truncated, is_secret, created_at, author, date(Y-m-d), date_short(m.d), url, board_key, view_count, comment_count, excerpt, thumb_url
- url 은 사이트주소/게시판키/view/글번호 형식의 전체 주소
- 소스 주석에는 일부 항목만 적혀 있고 실제로는 위 항목이 모두 들어옵니다.
직접 출력 예 (비밀글 안전 처리)
<?php $posts = dx_board_posts('notice', 3, false, 25, 0); ?>
<ul>
<?php foreach ($posts as $p): ?>
<li><a href="<?php echo htmlspecialchars($p['url'], ENT_QUOTES, 'UTF-8'); ?>">
<?php echo $p['is_secret'] ? '비밀글입니다' : htmlspecialchars($p['title'], ENT_QUOTES, 'UTF-8'); ?>
</a> <small><?php echo $p['date_short']; ?></small></li>
<?php endforeach; ?>
</ul>
여러 게시판을 합쳐 최신순 (비밀글 제외)
function my_merge_latest($keys, $limit = 5)
{
$all = array();
foreach ($keys as $k) {
if (!my_can_read($k)) continue;
foreach (dx_board_posts($k, $limit) as $p) {
if (empty($p['is_secret'])) $all[] = $p; // 비밀글 제외
}
}
usort($all, function ($a, $b) { return strcmp($b['created_at'], $a['created_at']); });
return array_slice($all, 0, $limit);
}
사용: $rows = my_merge_latest(array('free','gallery'), 5);
- 권한 확인 함수 my_can_read 는 6/13 에 있습니다. 먼저 정의해 두세요.
다음: 6/13 권한과 캐시