it 언어 노트/그누보드&영카트

그누보드 훅 사용 방법

윤비버 2024. 7. 27. 23:45
728x90
반응형

그누보드 훅 사용 방법에 대해서 간단하게 올립니다.

(우선 설명이 길어서 평어체 위주로 글을 남깁니다.)

 

너무 어렵게 생각 할필요 없다. 

예를들어서 전체적으로 제어를 해야한다면 common.php 를 생각 할것이다.

여기 접근하면 제일 마지막 줄에 이 함수를 찾으면 된다.

run_event('common_header');

 

이걸 활용해서 쓰면된다.

 

나같은 경우 extend 폴더를 확장해서 자주 사용한다.

경로는 이렇게 하면된다.

extends/beaver.extend.php 를 만든다.

 

add_event('common_header', function () {
    global $g5;
    
    // 소스코드 를 넣어주세요 
});

 

이렇게 run_event 훅을 보면 인자가 없을때는 그냥 add_event로 클로저 방식으로 만들면된다.

(훅 사용할때 클로저 방식을 의도하여 만들었다.)

 

다른 훅을 예시로 한다면 

add_replace 함수가 있다. 

이거는 리턴 받을 일이 있을때 필요하다 

 

add_replace('board_list', function ($list,$bo_table,$wr_id,$board,$sca) {

 

이건 내가 만든건데 목록에보면 $list 배열을 재활용하고 싶어서 만들어봤다.

list.php 접근해서 $list 배열을 찾아서 반복문 맨 아래에 넣어주면 된다.

 $list = run_replace('board_list', $list,$bo_table,$wr_id,$board,$sca);

 

이걸 설명한다면 함수명을 board_list로 하고 넘겨야 할 값을 인자에다가 넣어주면된다.

$list,$bo_table 등 넣고 싶은 것들을 넣어주고 아래 처럼 하면된다. (예시처럼 활용하면된다.)

 

add_replace('board_list', function ($list,$bo_table,$wr_id,$board,$sca) {
    global $cate;
    
    /// 소스코드 ....
    
     return $newList;
}, G5_HOOK_DEFAULT_PRIORITY, 5);

 

여기서 다시 설명하자면 리턴은 꼭 줘야지 재 배열로 값을 넘겨줄수있다.

그리고 클로저 $priority 인자는 그냥 그대로 적용하고 제일 마지막 어귤먼트만 갯수를 변경해야한다. 클로저 인자가 5개가 있어서 숫자를 5로 넣고 끝내면 된다. (설명 부족으로 아래 훅 사용법 참고 자료를 보고 공부하면된다. ㅋㅋㅋㅋ)

 

어쨌든 훅을 이런식으로 사용하면 되는데 다국어를 만들려고 훅 위주로 쓰다가 안먹히는 버그가 있어서.. 그건 억지로 해결 했는데.. 

 

밑에 그누보드 가이드를 참고하면 tail_sub 이 있는데 여기서 버그가 좀 있다.. 설명하기 길어서 차라리 다국어를 다른 방식으로 제작 해야된다.

 

여기까지... 끝!

 

 

 

참고 자료 :

https://g5guide.github.io/

 

그누보드5 가이드 - 그누보드5 가이드

GNUBOARD 5 Guide 그누보드5 가이드 개발사가 안 만들어서 사용자가 직접 만드는 그누보드 안내서

g5guide.github.io

 

https://www.realcoding.blog/725fdaab-325b-40ad-9eb9-a3704fc41b3d

 

그누보드 Hook (훅) 사용법 정리 및 이벤트 종류

그누보드 5.4 부터 도입된 훅 기능에 대해서 살펴보자

www.realcoding.blog

 

https://gnustudy.com/bbs/board.php?bo_table=gnu_tip&wr_id=341#google_vignette

 

hook 기능을 이용한 글 이동시 안내 쪽지 발송 - 그누보드팁

관리자가 특정 글을 다른 게시판으로 이동 시해당 글을 등록한 회원에게 안내 쪽지를 발송하는 팁을 올린 적이 있었습니다.https://gnustudy.com/bbs/board.php?bo_table=gnu_tip&wr_id=339위 팁은 bbs/move_update.php

gnustudy.com

 

 

728x90
반응형