first commit 2

This commit is contained in:
hmw1001
2026-06-11 18:47:38 +09:00
parent c768729ce6
commit 6f534e33a6
11095 changed files with 1595758 additions and 0 deletions
@@ -0,0 +1,15 @@
<?php
if (!defined('_GNUBOARD_')) exit;
/**
* rb.custom :: new_main_visual/config.php
* 새로운 메인 비주얼 모듈 설정 파일
*/
$new_main_visual_config = [
'bo_table' => 'main_visual', // 💡 [수정] 사용할 게시판 ID (관리자에서 이 아이디로 게시판을 만들어주세요)
'load_rows' => 4, // 💡 [수정] 4개로 나누어 보여줌
'subject_len' => 50, // 제목 글자 수
'slide_timeout' => 5000, // 슬라이드 전환 시간
];
?>
@@ -0,0 +1,110 @@
/* New Main Visual Module Style */
.new-main-visual {
position: relative;
width: 100%;
height: 500px;
overflow: hidden;
}
.visual-slider, .visual-item {
width: 100%;
height: 100%;
}
.visual-item a {
display: block;
width: 100%;
height: 100%;
position: relative;
text-decoration: none;
}
.visual-image {
width: 100%;
height: 100%;
background-size: cover;
background-position: center;
transition: transform 0.4s ease;
}
.visual-item a:hover .visual-image {
transform: scale(1.05);
}
.visual-caption {
position: absolute;
bottom: 0;
left: 0;
width: 100%;
padding: 40px;
background: linear-gradient(to top, rgba(0,0,0,0.8) 0%, rgba(0,0,0,0) 100%);
color: #fff;
text-align: left;
}
.caption-title {
font-size: 2rem;
font-weight: 700;
margin: 0 0 10px;
line-height: 1.3;
}
/* 💡 [추가] 요약글 스타일 */
.caption-desc {
font-size: 1.1rem;
line-height: 1.6;
margin: 0;
opacity: 0.9;
max-width: 800px;
overflow: hidden;
text-overflow: ellipsis;
display: -webkit-box;
-webkit-line-clamp: 2; /* 2줄까지만 표시 */
-webkit-box-orient: vertical;
}
.slider-nav {
position: absolute;
top: 50%;
left: 0;
right: 0;
transform: translateY(-50%);
display: flex;
justify-content: space-between;
padding: 0 30px;
pointer-events: none;
}
.slider-nav button {
pointer-events: auto;
background: rgba(0,0,0,0.3);
border: none;
color: #fff;
width: 50px;
height: 50px;
border-radius: 50%;
cursor: pointer;
font-size: 1.5rem;
opacity: 0;
transition: opacity 0.3s;
}
.new-main-visual:hover .slider-nav button {
opacity: 1;
}
.empty-visual {
display: flex;
justify-content: center;
align-items: center;
font-size: 1.2rem;
color: #888;
background: #f0f0f0;
}
@media (max-width: 768px) {
.new-main-visual { height: 300px; }
.visual-caption { padding: 20px; }
.caption-title { font-size: 1.4rem; }
.caption-desc { font-size: 0.9rem; -webkit-line-clamp: 3; }
}
@@ -0,0 +1,19 @@
(function($) {
"use strict";
$(function() {
// 각 비주얼 모듈에 대해 개별적으로 Cycle2를 초기화합니다.
$('.new-main-visual').each(function() {
var $this = $(this);
var $slider = $this.find('.visual-slider');
// 이미 초기화되었다면 중복 실행 방지
if ($slider.data('cycle.opts')) {
return;
}
$slider.cycle();
});
});
})(jQuery);
@@ -0,0 +1,79 @@
<?php
if (!defined('_GNUBOARD_')) exit;
// 1. 설정 파일 로드
$config_path = __DIR__ . '/config.php';
if (!file_exists($config_path)) return;
include_once($config_path);
// 2. 데이터 가져오기
$list = get_latest(
$new_main_visual_config['bo_table'],
$new_main_visual_config['load_rows'],
$new_main_visual_config['subject_len']
);
$visual_id = 'nmv_' . uniqid();
?>
<!-- Rebuilder 표준 구조 -->
<div class="rb_layout_box" data-id="new_main_visual" data-title="신규 메인 비주얼">
<?php if ($is_admin) { ?>
<div class="rb_module_set">
<a href="javascript:;" onclick="set_module_send(this);" class="btn_module_setup"><i class="fa fa-cog"></i></a>
</div>
<?php } ?>
<div class="new-main-visual" id="<?php echo $visual_id; ?>">
<div class="visual-slider cycle-slideshow"
data-cycle-fx="scrollHorz"
data-cycle-slides="> .visual-item"
data-cycle-timeout="<?php echo $new_main_visual_config['slide_timeout']; ?>"
data-cycle-prev="#<?php echo $visual_id; ?> .slider-prev"
data-cycle-next="#<?php echo $visual_id; ?> .slider-next"
data-cycle-log="false"
>
<?php
for ($i = 0; $i < count($list); $i++) {
$item = $list[$i];
$thumb1 = get_list_thumbnail($new_main_visual_config['bo_table'], $item['wr_id'], 875, 582, false, true);
// $thumb = get_list_thumbnail($bo_table, $item['wr_id'], $board['bo_gallery_width'], $board['bo_gallery_height'], false, true);
// 💡 [핵심 수정] 썸네일이 없을 경우, 테마의 no_image.png를 사용하도록 경로를 명확히 지정
// G5_THEME_URL은 'http://도메인/theme/테마명' 까지입니다.
if (isset($thumb1['src']) && $thumb1['src']) {
$thumb_src = $thumb1['src'];
} else {
// rb.img 폴더가 테마 루트에 있다고 가정
$thumb_src = G5_THEME_URL . '/rb.img/no_image.png';
}
// 요약글 가져오기
$summary = cut_str(strip_tags($item['wr_content']), 100);
?>
<div class="visual-item">
<!-- <a href="--><?php //echo $item['href']; ?><!--">-->
<div class="visual-image" style="background-image:url('<?php echo $thumb_src; ?>');"></div>
<div class="visual-caption">
<h3 class="caption-title"><?php echo $item['subject']; ?></h3>
<p class="caption-desc"><?php echo $summary; ?></p>
</div>
<!-- </a>-->
</div>
<?php
}
if (count($list) == 0) {
echo "<div class='visual-item empty-visual'>게시물이 없습니다.</div>";
}
?>
</div>
<div class="slider-nav">
<button type="button" class="slider-prev"><i class="fa fa-chevron-left"></i></button>
<button type="button" class="slider-next"><i class="fa fa-chevron-right"></i></button>
</div>
</div>
</div>
<link rel="stylesheet" href="<?php echo G5_THEME_URL; ?>/rb.custom/new_main_visual/module.css?ver=<?php echo G5_CSS_VER; ?>">
<script src="<?php echo G5_THEME_URL; ?>/js/cycle2/jquery.cycle2.min.js"></script>
<script src="<?php echo G5_THEME_URL; ?>/rb.custom/new_main_visual/module.js?ver=<?php echo G5_JS_VER; ?>"></script>