75 lines
3.3 KiB
PHP
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();
|
|
}
|