채택완료

상단 스킨 호출 문의 드립니다.

2023-11-03 (금) 17:27:34 10,209

메인 페이지에서는 호출이 잘되는데...
게시판페이지 list, view, write 에서는 
500 (Internal Server Error)
에러가 발생하네요

그래서 각 페이지마다 

<?php

include_once(G5_THEME_PATH.'/blog_skin/Blog_top_1.php');

include_once(G5_THEME_PATH.'/blog_skin/Blog_top_2.php');

?>

이렇게 해서 추가해도 나타나지 않고...흠 제가 뭘 잘못햇을까요...


head.php

Copy
<main class="container">

<?php

include_once(G5_THEME_PATH.'/blog_skin/Blog_top_1.php');

include_once(G5_THEME_PATH.'/blog_skin/Blog_top_2.php');

?>

<div class="row">

    <div class="col-12 col-lg-8">

tail.php

Copy
</div>

    <div class="col-12 col-lg-4">

        <div class="p-4 mb-3 bg-body-tertiary rounded">

        <h4 class="fst-italic">소개</h4>

        <p class="mb-0">내용입력</p>

        </div>

         <?php

          include_once(G5_THEME_PATH.'/blog_skin/Blog_Sidebar1.php');

          ?>

     </div>

</div>

</main>

Blog_top_1.php

Copy
<?php

if (!defined('_GNUBOARD_')) exit; // 개별 페이지 접근 불가

 

include_once(G5_LIB_PATH.'/thumbnail.lib.php');

 

$boards = ['free', 'notice', 'qna'];

$posts_per_board = 5;

$desc_length = 80;

$thumb_width = 210;

$thumb_height = 150;

$background_size = 'cover';

$all_posts = [];

foreach ($boards as $board) {

    $sql = "SELECT *, '{$board}' as bo_table FROM {$g5['write_prefix']}{$board} ORDER BY wr_id DESC LIMIT $posts_per_board";

    $result = sql_query($sql);

    while ($row = sql_fetch_array($result)) {

        $all_posts[] = $row;

    }

}

 

usort($all_posts, function($a, $b) {

    return strtotime($b['wr_datetime']) - strtotime($a['wr_datetime']);

});

 

$latest_posts = array_slice($all_posts, 0, 5);

?>

 

<div class="container-fluid p-4 p-md-5 mb-4 rounded bg-body-secondary custom-bg">

    <div class="row">

        <?php foreach ($latest_posts as $post): ?>

        <?php

        preg_match_all("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i", $post['wr_content'], $matches);

        $img = !empty($matches[1]) ? $matches[1][0] : 'your-image-url-here.jpg';

        $title = strip_tags($post['wr_subject']);

        $content = cut_str(strip_tags($post['wr_content']), $desc_length);

        $link = G5_BBS_URL."/board.php?bo_table=".$post['bo_table']."&wr_id=".$post['wr_id'];

        ?>

        <div class="col-12 col-lg-6 px-0 d-none post" data-bg-image="<?php echo $img; ?>" style="background-size: <?php echo $background_size; ?>;">

            <div class="text-white p-4">

                <h1 class="h4 fst-italic title"><?php echo $title; ?></h1>

                <p class="lead my-3"><?php echo $content; ?></p>

                <a href="<?php echo $link; ?>" class="btn btn-secondary">더보기</a>

            </div>

        </div>

        <?php endforeach; ?>

    </div>

</div>

 

<style>

.custom-bg {

    background-size: <?php echo $background_size; ?>;

    background-position: center center;

    background-repeat: no-repeat;

}

 

.title {

    white-space: nowrap;

    overflow: hidden;

    text-overflow: ellipsis;

    max-width: 100%

}

 

@media (max-width: 992px) {

    .custom-bg .row {

        flex-direction: column-reverse;

    }

    .custom-bg {

        padding-bottom: 100%;

    }

}

</style>

 

<script>

window.onload = function() {

    let currentPost = 0;

    const posts = document.querySelectorAll('.post');

    const customBg = document.querySelector('.custom-bg');

    const displayDuration = 15000;

 

    function showNextPost() {

        posts[currentPost].classList.add('d-none');

        currentPost = (currentPost + 1) % posts.length;

        const nextBgImageUrl = posts[currentPost].getAttribute('data-bg-image');

        customBg.style.backgroundImage = `linear-gradient(to right, rgba(255,255,255,0.7), transparent 50%), url('${nextBgImageUrl}')`;

        posts[currentPost].classList.remove('d-none');

    }

 

    if (posts.length > 0) {

        customBg.style.backgroundImage = `linear-gradient(to right, rgba(255,255,255,0.7), transparent 50%), url('${posts[0].getAttribute('data-bg-image')}')`;

        posts[0].classList.remove('d-none');

        setInterval(showNextPost, displayDuration);

    }

};

</script>

Blog_top_1.php

Copy
<?php

if (!defined('_GNUBOARD_')) exit;

include_once(G5_LIB_PATH.'/thumbnail.lib.php');

$board_sql = "SELECT bo_table, bo_subject FROM {$g5['board_table']}";

$board_result = sql_query($board_sql);

$board_names = [];

while ($board_row = sql_fetch_array($board_result)) {

    $board_names[$board_row['bo_table']] = $board_row['bo_subject'];

}

$boards = ['free', 'notice', 'qna'];

$posts_per_board = 5;

$desc_length = 40;

$thumb_width = 200;

$thumb_height = 250;

$all_posts = [];

foreach ($boards as $board) {

    $sql = "SELECT * FROM {$g5['write_prefix']}{$board} ORDER BY wr_id DESC LIMIT {$posts_per_board}";

    $result = sql_query($sql);

    while ($row = sql_fetch_array($result)) {

        preg_match_all("/<img[^>]*src=[\"']?([^>\"']+)[\"']?[^>]*>/i", $row['wr_content'], $matches);

        $img = !empty($matches[1]) ? $matches[1][0] : 'your-image-url-here.jpg';

        $full_title = strip_tags($row['wr_subject']);

        $title = $full_title;

        $content = cut_str(strip_tags($row['wr_content']), $desc_length);

        $content = html_entity_decode($content);

        $link = G5_BBS_URL."/board.php?bo_table={$board}&wr_id=".$row['wr_id'];

        $date = $row['wr_datetime'];

        $all_posts[] = [

            'board' => $board_names[$board],

            'img' => $img,

            'title' => $title,

            'content' => $content,

            'link' => $link,

            'date' => $date

        ];

    }

}

usort($all_posts, function($a, $b) {

    return strtotime($b['date']) - strtotime($a['date']);

});

$latest_posts = array_slice($all_posts, 0, $posts_per_board);

?>

 

<style>

.post-item img { transition: opacity 0.5s ease; }

.post-item img.fade-out { opacity: 0; visibility: hidden; }

 

.thumbnail-img {

    display: block;

    width: <?php echo $thumb_width; ?>px;

    height: <?php echo $thumb_height; ?>px;

    object-fit: cover;

    object-position: center;

}

</style>

 

<div class="row mb-2">

    <?php for ($i = 0; $i < 2; $i++): ?>

    <?php

        $post = $latest_posts[$i];

    ?>

    <div class="col-md-6 post-item">

        <div class="d-flex flex-nowrap g-0 border rounded overflow-hidden mb-4 shadow-sm h-md-250 position-relative">

            <div class="col p-4 d-flex flex-column position-static">

                <strong class="d-inline-block mb-2 text-primary"><?php echo $post['board']; ?></strong>

                <h4 class="mb-0 text-nowrap text-truncate"><?php echo htmlspecialchars($post['title']); ?></h4>

                <div class="mb-1 text-muted"><?php echo $post['date']; ?></div>

                <p class="card-text mb-auto"><?php echo $post['content']; ?></p>

                <a href="<?php echo $post['link']; ?>" class="stretched-link">더보기</a>

            </div>

            <div class="col-auto d-none d-lg-block overflow-hidden">

                <img class="thumbnail-img" src="<?php echo $post['img']; ?>" alt="Thumbnail" style="width: <?php echo $thumb_width; ?>px; height: <?php echo $thumb_height; ?>px;">

            </div>

        </div>

    </div>

    <?php endfor; ?>

</div>

 

<script>

document.addEventListener("DOMContentLoaded", function() {

    let currentPostIndex = 1;

    const posts = document.querySelectorAll('.post-item');

    const postData = <?php echo json_encode($latest_posts); ?>;

    const displayDuration = 15000;

 

    function showNextPost() {

        const leftPost = posts[0];

        const rightPost = posts[1];

        leftPost.innerHTML = rightPost.innerHTML;

        currentPostIndex = (currentPostIndex + 1) % postData.length;

        const nextPost = postData[currentPostIndex];

        const oldImage = rightPost.querySelector('.col-auto img');

        if (oldImage) {

            oldImage.classList.add('fade-out');

        }

        setTimeout(() => {

            if (oldImage) {

                oldImage.src = nextPost.img;

                oldImage.classList.remove('fade-out');

                oldImage.style.visibility = 'visible';

            }

        }, 500);

        const titleElement = rightPost.querySelector('h4.mb-0');

        const dateElement = rightPost.querySelector('.mb-1 text-muted');

        const contentElement = rightPost.querySelector('.card-text.mb-auto');

        const linkElement = rightPost.querySelector('a.stretched-link');

 

        if (titleElement) {

            titleElement.textContent = nextPost.title;

        }

        if (dateElement) {

            dateElement.textContent = nextPost.date;

        }

        if (contentElement) {

            contentElement.textContent = nextPost.content;

        }

        if (linkElement) {

            linkElement.href = nextPost.link;

        }

    }

    setInterval(showNextPost, displayDuration);

});

</script>

답변 2개 / 댓글 1개

채택된 답변
+20 포인트
2023-11-03 (금) 22:12:03
'{$board}'

이부분이 {$bo_table} 이렇게 들어가야 하지 않나 싶습니다

답변에 대한 댓글 1개

감사합니다 위 부분 전체 변경하니 잘 호출하네요 ㅎ

혹시 몰라서 남깁니다 위 스킨 사용시 

$boards = ['free', 'notice', 'qna'];
이 부분때문에 글작성이나 목록 이동시

마지막 qna 테이블로 모든 게시판이 연결되네요

그러니 혹시라도 위에 스킨은 사용하지 마시고 사용하실거면

https://sir.kr/g5_tip/4103 이페이지 최신글 호출 사용해서

스킨페이지 수정하시면 글작성, 목록 이동이 정상적으로 이동됩니다

혹시 모르고 사용하실까봐 댓글 남겨요

답변을 작성하려면 로그인이 필요합니다.