first commit 2
This commit is contained in:
@@ -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>
|
||||
Reference in New Issue
Block a user