훅 관련 질문드립니다.
본문
훅 개념이 잘 이해가 안 되서, 공부 겸 이것저것 해보면서 테스트해보고 있는데,
아래 get_custom_board_db 함수가 호출이 안 되는데, 혹시 add_replace 함수를 잘못 사용한걸까요?
영카트 5.4.5.4 버전이고, 위치는 extend 폴더 아래에 파일 하나 만들어서 작업하고 있습니다.
add_replace('get_board_db', 'get_custom_board_db', 10, 2);
function get_custom_board_db($args=array(), $bo_table) {
global $g5;
$key = md5($bo_table);
$sql = " select * from {$g5['custom_board_table']} where bo_table = '$bo_table' ";
$board = sql_fetch($sql);
$board_defaults = array('bo_table'=>'', 'bo_skin'=>'', 'bo_mobile_skin'=>'', 'bo_upload_count' => 0, 'bo_use_dhtml_editor'=>'', 'bo_subject'=>'', 'bo_image_width'=>0);
$cache[$key] = array_merge($board_defaults, (array) $board);
return $cache[$key];
}
답변 2
/bbs/memo.php를 예를 들면
run_event('memo_list', $kind, $unkind, $page);
이런 코드가 있습니다.
그러면 extend 등에
add_event('memo_list', 'g54_user_memo_insert', 10, 3);
function g54_user_memo_insert($kind, $unkind, $page=1){
global $g5, $is_member, $member;
...}
으러 처리합니다.
제 사이트를 찾아 봐도, 최신 버전이 아닌지
get_board_db 이벤트는 run_event()코드가 없네요.
자답입니다.
코드 호출 타이밍 문제였던 것 같네요.
/common.php 에서
772 라인 $extend_file = array(); 부분을,
554 라인 위로 $write = array(); 부분 위로 올리니 함수가 호출되면서 데이터도 정상적으로 받아지긴 했는데, 다른 부분에서 오류가 발생해서 common.php 코드 전체적으로 확인해서 순서들을 조금 조정할 필요가 있을 것 같네요....