first commit 2
This commit is contained in:
@@ -0,0 +1,75 @@
|
||||
<?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();
|
||||
}
|
||||
Reference in New Issue
Block a user