Files
dnssash/theme/rd.dnssash/rb.custom/tabs/tab_module.php
T
2026-06-11 18:47:38 +09:00

75 lines
3.3 KiB
PHP

<?php
if (!defined('_GNUBOARD_')) exit;
/**
* 게시판 최신글 또는 콘텐츠 페이지를 탭으로 생성하는 함수
*
* @param array $tabs_config 탭 설정 배열
* @return string 생성된 탭 HTML
*/
function rb_tabs($tabs_config) {
// 💡 [복원] 설정값이 유효한지 확인하는 필수 코드
if (!is_array($tabs_config) || empty($tabs_config)) {
return '';
}
// 💡 [복원] 고유 ID 생성 (한 페이지에 여러 탭 모듈이 있어도 충돌 방지)
$module_id = 'rb-tab-module-' . uniqid();
// 💡 [복원] 이 모듈에 필요한 CSS와 JS를 동적으로 추가합니다.
add_stylesheet('<link rel="stylesheet" href="'.G5_THEME_URL.'/rb.custom/tabs/tab_style.css?ver='.G5_SERVER_TIME.'">', 0);
add_javascript('<script src="'.G5_THEME_URL.'/rb.custom/tabs/tab_script.js?ver='.G5_SERVER_TIME.'"></script>', 10);
// 💡 [복원] HTML 출력을 안전하게 버퍼에 담기 시작
ob_start();
?>
<div class="rb-tab-module" id="<?php echo $module_id; ?>">
<!-- 1. 탭 네비게이션 -->
<ul class="rb-tab-nav">
<?php foreach ($tabs_config as $index => $tab): ?>
<?php
$tab_id = $tab['type'] . '-' . $tab['id'];
$is_active = ($index === 0) ? 'active' : '';
?>
<li><a href="#<?php echo $tab_id; ?>" class="<?php echo $is_active; ?>"><?php echo htmlspecialchars($tab['title']); ?></a></li>
<?php endforeach; ?>
</ul>
<!-- 2. 탭 콘텐츠 -->
<div class="rb-tab-content-wrapper">
<?php foreach ($tabs_config as $index => $tab): ?>
<?php
$tab_id = $tab['type'] . '-' . $tab['id'];
$is_active = ($index === 0) ? 'active' : '';
?>
<div id="<?php echo $tab_id; ?>" class="rb-tab-content <?php echo $is_active; ?>">
<?php
// 💡 [핵심] 탭 타입에 따라 다른 내용을 불러옵니다.
switch ($tab['type']) {
case 'board':
// 💡 [개선] 타입이 'board'이면 탭 전용 최신글 스킨(rb_tab_basic)을 불러옵니다.
$options = $tab['options'] ?? [];
$rows = $options['rows'] ?? 5;
$subject_len = $options['subject_len'] ?? 40;
echo latest('rb_tab_basic', $tab['id'], $rows, $subject_len);
break;
case 'content':
// 타입이 'content'이면 g5_content 테이블에서 내용을 불러옵니다.
$co = get_content_db($tab['id']);
if ($co) {
echo conv_content($co['co_content'], $co['co_html']);
} else {
echo '<div class="no-posts">콘텐츠('.htmlspecialchars($tab['id']).')를 찾을 수 없습니다.</div>';
}
break;
}
?>
</div>
<?php endforeach; ?>
</div>
</div>
<?php
// 💡 [복원] 버퍼에 담긴 HTML을 반환하고 버퍼를 비웁니다.
return ob_get_clean();
}