테스트 사이트 - 개발 중인 베타 버전입니다

후킹, 칼럼 추가로 내용관리_검색_타이틀을 만들기

/extend/ 폴더에 후킹 함수를 사용하고

디비에 내용관리_검색_타이틀(co_seo_title)을 만들어,

'co_subject와 추가 설정한 'co_seo_title'을 브라우저 상태바(title)에 적용합니다.

 

https://trigger.glitter.kr/bbs/content.php?co_id=company

 

1. SQL 컬럼 추가, 순정 그누 경우 기 존재 함 = = =[code]

ALTER TABLE `g5_content` ADD COLUMN `co_seo_title` VARCHAR(255) NOT NULL DEFAULT '';[/code]

2. co_id 각각에 따른 co_seo_title 값을 변경/입력 (그누, '회사소개' 예시) = = =[code]

UPDATE `g5_content` SET `co_seo_title` = '검색회사소개' WHERE `co_id` = 'company';[/code]

. . .

3. /extend/seo_title.extend.php = = =[code]

<?php

if (!defined('_GNUBOARD_')) exit; // 보안 처리

 

// co_id가 있을 경우, 해당 co_id의 co_seo_title 조회

if (isset($_GET['co_id'])) {

    // co_id 필터링 (한글, 영문, 숫자, 밑줄(_) 허용)

    $co_id = preg_replace('/[^가-힣a-zA-Z0-9_]/u', '', $_GET['co_id']);

 

    // SQL 실행하여 co_seo_title 조회

    $sql = "SELECT co_seo_title FROM g5_content WHERE co_id = '".sql_real_escape_string($co_id)."'";

    $result = sql_fetch($sql);

 

    // co_seo_title이 존재하면 cf_title을 대체

    if (!empty($result['co_seo_title'])) {

        $config['cf_title'] = trim($result['co_seo_title']); // co_seo_title로 변경

    }

}

 

// 후킹 시스템을 사용하여 g5['title']을 재설정

add_event('head.sub.php', function() {

    global $g5, $config;

 

    if (!isset($g5['title'])) {

        $g5['title'] = $config['cf_title'];

    } else {

        // 상태바에 표시될 제목 설정

        $g5['title'] = implode(' | ', array_filter(array($g5['title'], $config['cf_title'])));

    }

 

    // XSS 방지를 위한 strip_tags 처리

    $g5['title'] = strip_tags($g5['title']);

});

?>[/code]

 

붙임) 추가로 'co_seo_title'을 사용한 검색을 위해선,
/bbs/content.php의 필터링 코드가 영문, 숫자, 밑줄만 허용하고 있으니

한글을 허용하도록 수정이 필요합니다.

 

해당 예시에서 사용한 /bbs/content.php는 첨부한 '파일1' content.php.zip입니다.

붙임)
다만, 우선순위(priority) 지정은 운영자가 직접 넣어야 합니다.

원본이 자동 보정하지 않으므로 충돌 가능성이 있으면

반드시 G5_HOOK_DEFAULT_PRIORITY+10 등으로 지정해야 안전합니다.

댓글 작성

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

로그인하기

댓글 3개

감사합니다 ^^

정말 감사합니다.
게시판 각 페이지에서도 적용하는것 부탁드릴께요...ㅎㅎ

게시판 목록

그누보드5 팁자료실

글쓰기
🐛 버그신고