Poter

1원 짜리 팁 ... 메인에 최신글과 분류명 출력 .....

· 2026-05-16 (토) 07:32:50 · 1632 · 1
1111.png
2222.png
해당 질문글 > https://sir.kr/questions/564727?stx=%EC%B9%B4%ED%85%8C%EA%B3%A0%EB%A6%AC

미리보기 > https://ysmoto.kr/ys2/
미리보기 > https://ysmoto.kr/ys2/index1.php

분류명 출력 (게시글이 없는 분류는 출력 안함)
아래 테이블명 변경 후 사용 하시면 됩니다.


<?php
// ==========================================
// [여기만 수정하세요] 연동할 게시판 테이블명을 적어줍니다.
// ==========================================
$my_table = '테이블명'; 
?>

<!-- 깜빡임 없이 제자리에서 바꾸기 위해 전체를 하나의 ID(#ajax-lesson-wrapper)로 감쌉니다 -->
<div id="ajax-lesson-wrapper">

    <?php
    global $g5;
    $sca = isset($_GET['sca']) ? clean_xss_tags($_GET['sca']) : '';
    $target_board = get_board_db($my_table);
    $categories = ($target_board['bo_use_category']) ? explode('|', $target_board['bo_category_list']) : array();
    $safe_write_table = $g5['write_prefix'] . $my_table;
    ?>

    <!-- 1. 탭 메뉴 영역 -->
    <div class="main-tab-wrapper">
        <a href="javascript:void(0);" data-sca="" class="main-tab-item <?php echo ($sca == '') ? 'active' : ''; ?>">
            전체 수업
        </a>

        <?php
        if (!empty($categories) && is_array($categories)) {
            foreach ($categories as $cate) {
                $cate = trim($cate);
                if (!$cate) continue;

                // [핵심 1] 2단 분류(대 > 소) 구조여도 1단 대분류 이름만 가지고 매칭합니다.
                // [핵심 2] LIKE 조건문으로 실제 이 대분류 아래에 등록된 원글(wr_is_comment=0)이 있는지 검사합니다.
                $escape_cate = addslashes($cate);
                $sql = " SELECT COUNT(*) as cnt FROM `{$safe_write_table}` WHERE (ca_name = '{$escape_cate}' OR ca_name LIKE '{$escape_cate}%') AND wr_is_comment = 0 ";
                $row_count = sql_fetch($sql, false); 
                
                // [핵심 3] 실제 등록된 글이 0개라면 버튼을 화면에 만들지 않고 패스합니다 (자동 다이어트)
                if (!$row_count || (int)$row_count['cnt'] === 0) {
                    continue;
                }

                $active_class = ($sca === $cate) ? 'active' : '';
            ?>
                <a href="javascript:void(0);" data-sca="<?php echo urlencode($cate); ?>" class="main-tab-item <?php echo $active_class; ?>">
                    <?php echo $cate; ?>
                </a>
            <?php 
            }
        } 
        ?>
    </div>

    <!-- 2. 게시물 내용물 출력 구역 (울타리 내부에 있어 한 몸처럼 즉시 바뀜) -->
    <h2 class="sound_only">최신글</h2>
    <p> </p>
    <div class="latest_top_wr" style="max-width:1200px; margin:0 auto; width:100%; padding:0;">
        <?php
        echo '<div class="main_lt_section" style="margin-bottom:-10px; clear:both;">';
        
        // 최신글 스킨이 현재 비동기로 요청된 분류(sca)를 매번 정상 인식하도록 강제 매핑
        $_GET['sca'] = $sca;
        echo latest('theme/pic_list1', $my_table, 4, 25);
        
        echo '</div>';
        ?>
    </div>

</div>

<!-- ========================================== -->
<!-- [핵심 4] 화면 깜빡임 차단 + 클릭 시 마우스 스크롤 높이 제자리 고정 스크립트 -->
<!-- ========================================== -->
<script>
$(document).ready(function() {
    $(document).off('click', '#ajax-lesson-wrapper .main-tab-item').on('click', '#ajax-lesson-wrapper .main-tab-item', function(e) {
        e.preventDefault();
        
        var $this = $(this);
        var sca = $this.data('sca'); 
        
        // 클릭한 순간 마우스 스크롤 Y축 높이를 기억 장치에 임시 저장 (화면 제자리 고정용)
        var currentScrollY = window.scrollY;
        
        // 활성화 탭 디자인 즉시 변경
        $('#ajax-lesson-wrapper .main-tab-item').removeClass('active');
        $this.addClass('active');
        
        // 현재 주소창 환경 정보를 통째로 복제 (파일명과 기존 파라미터 강제 유지)
        var currentUrl = new URL(window.location.href);
        if (sca) {
            currentUrl.searchParams.set('sca', decodeURIComponent(sca));
        } else {
            currentUrl.searchParams.delete('sca');
        }
        
        var browserUrl = currentUrl.pathname + currentUrl.search;
        
        // 그누보드 엔진 캐시 파괴용 실시간 타임스탬프 주입
        currentUrl.searchParams.set('_', new Date().getTime());
        var requestUrl = currentUrl.pathname + currentUrl.search;
        
        // 큰 울타리 전체를 새로고침하여 내용물 즉시 동기화
        $('#ajax-lesson-wrapper').load(requestUrl + ' #ajax-lesson-wrapper > *', function() {
            // 통신 완료 후 브라우저 주소창 주소 갱신
            history.pushState(null, null, browserUrl);
            
            // [중요] 비동기로 데이터가 새로 그려진 후, 기억해 둔 마우스 높이로 강제 고정하여 위로 튀는 현상 원천 차단
            window.scrollTo(0, currentScrollY);
        });
    });
});
</script>

미리보기 > https://ysmoto.kr/ys2/
미리보기 > https://ysmoto.kr/ys2/index1.php
 

첨부파일

1111.png (193 KB)
1회 2026-05-16 07:32
2222.png (275.8 KB)
0회 2026-05-16 07:32
1명이 반응했습니다
|

댓글 1개

감사합니다.
댓글을 작성하시려면 로그인이 필요합니다.

그누보드5 팁자료실

2,788건
+
제목 글쓴이 날짜 조회
22-06-20 조회 8,206
09-11 조회 135
09-04 조회 759
08-09 조회 1,613
08-05 조회 2,777
07-30 조회 1,613
07-30 조회 1,513
07-15 조회 2,790
07-01 조회 2,975
06-30 조회 2,962
06-22 조회 3,694
06-17 조회 2,846
06-14 조회 1,585
05-29 조회 1,676
05-16 조회 1,633
05-04 조회 3,126
04-29 조회 3,309
04-28 조회 3,137
04-27 조회 3,100
04-25 조회 2,131
04-24 조회 3,856
04-23 조회 3,255
04-14 조회 2,274
04-08 조회 3,116
04-01 조회 4,811
03-31 조회 3,821
03-16 조회 3,982
03-14 조회 5,147
03-13 조회 4,152
03-10 조회 3,932
03-09 조회 4,058