[최신글 10/13] 개발 ③ 확장 조회 ① 결과 형식 맞추기 — DXCMS
키워드: my_format_rows, 반환 형식, 스킨 호환, 썸네일, 확장 함수 표기: (소스)=코드 확인·실행 검증, (README)=README 기재, (일반)=일반 지식
직접 만든 조회 함수의 결과도 기존 스킨에서 쓰려면 dx_board_posts 와 같은 형식의 배열로 맞춰야 합니다. 변환을 별도 함수로 분리해 두면 어떤 조회 함수에서도 재사용할 수 있습니다.
function my_format_rows($rows, $boardKey)
{
$out = array();
foreach ($rows as $r) {
$thumb = '';
if (preg_match('/<img[^>]+src=["\']([^"\']+)["\']/i', $r['content'], $im)) {
$thumb = (strpos($im[1], 'http') === 0) ? $im[1] : dx_base_url(ltrim($im[1], '/'));
}
$out[] = array(
'id' => $r['id'], 'title' => $r['title'], 'board_key' => $boardKey,
'url' => dx_base_url($boardKey . '/view/' . $r['id']),
'created_at' => $r['created_at'],
'date' => dx_date($r['created_at'], 'Y-m-d'), 'date_short' => dx_date($r['created_at'], 'm.d'),
'author' => $r['author'], 'view_count' => (int)$r['view_count'],
'comment_count' => (int)$r['comment_count'], 'is_secret' => (int)$r['is_secret'],
'excerpt' => '', 'thumb_url' => $thumb,
);
}
return $out;
}
설명
- 입력: DB 행 배열(id, title, content, created_at, view_count, comment_count, is_secret, author 필요)과 게시판 키
- 출력: 5/13 의 항목 (id, title, url, date, date_short, created_at, author, view_count, comment_count, is_secret, excerpt, thumb_url, board_key)
- url: 사이트주소/게시판키/view/글번호 형식 (코어와 동일, dx_base_url 사용)
- 썸네일은 본문의 첫
만 사용하고, 상대경로면 사이트 주소를 붙입니다. 코어는 thumbnail 컬럼과 첨부파일까지 보지만, 글마다 쿼리가 늘어나는 문제(7/13)를 피하려고 생략했습니다.
- excerpt 는 빈 값입니다. 발췌가 필요하면 content 에서 strip_tags 후 잘라 넣으세요.
- is_truncated 키는 없습니다. 번들 스킨은 이 키를 쓰지 않으므로 영향이 없습니다. (소스 검색 기준)
- 스킨이 새 항목을 쓰게 하려면 이 배열에 키를 추가하고 스킨에서 같은 이름으로 읽습니다.
- 모든 값은 출력 전에 스킨에서 이스케이프해야 합니다. (8/13)
다음: 11/13 확장 조회 ② my_posts
@디엑스