hook 을 이용해서 특정게시판에서만 글 작성 후 목록으로 이동

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
hook 을 이용해서 특정게시판에서만 글 작성 후 목록으로 이동

QA

hook 을 이용해서 특정게시판에서만 글 작성 후 목록으로 이동

본문

제목 그대로 특정 게시판에서 글 작성 시 view 페이지가 아닌 list 페이지로 이동하게 할 수 있나요...??
/bbs/write_update.php

$redirect_url = run_replace('write_update_move_url', short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&wr_id='.$wr_id.$qstr), $board, $wr_id, $w, $qstr, $file_upload_msg);
 
run_event('write_update_after', $board, $wr_id, $w, $qstr, $redirect_url);

하단 내용중 redirect_url 과 write_update_after 가 있길래, 혹시나 add_event 를 이용해서 해보려고 합니다...

 

다른 글들을 참고해서 스킨에 write_update.skin.tail.php 에


<?php
if( !defined('_GNUBOARD_') ) exit;
 
$redirect_url = run_replace('write_update_move_url', short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table'.$bo_table.$qstr), $board, $wr_id, $w, $qstr, $file_upload_msg);

이렇게 추가를 해봤는데 이동이 안됩니다... write_update.tail.skin.php 에서는 goto_url 로만 넘길 수 있는 것 같아요;;

 

hook 으로 처리를 해보려고해서 위 파일 내용은 주석처리한 후에

extend에 파일하나 생성해서


add_event('write_update_after', 'charter_write_after', 10, 5);
function charter_write_after($board, $wr_id, $w, $qstr, $redirect_url) {
    if( $board['gr_id'] != 'charter' ) exit;
    $redirect_url = run_replace('write_update_move_url', short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.$qstr), $board, $wr_id, $w, $qstr, $file_upload_msg);
    return $redirect_url;
}

이렇게 해봤는데 계속 view 페이지로 갑니다....;;

 

훅으로 글 작성 후 리스트로 가게할 수 있나요??

이 질문에 댓글 쓰기 :

답변 5

아 저 시간이 없어서 일단 그룹 까진 테스트 못했습니다.

 

아래 코드 쓰시면 네이버로 이동 되는 훅 사용 할 수 있습니다만, 그건 테스트이고

 

원하는 주소로 변경하세요

 


add_replace('write_update_move_url', 'charter_write_after', 10, 5);
function charter_write_after($board, $wr_id, $w, $qstr, $redirect_url) {
    $redirect_url = 'https://www.naver.com';
    return $redirect_url;
}

 

replace 이벤트이니 add_replace 이벤트 훅을 사용해야 합니다.

참고로 $board 하시면 원본 주소가 나올꺼에요 

답변 감사드립니다! 일단... event 를 replace 로 변경해서 사용하니 말씀해주신대로 $board 가 경로로 찍히네요;; replace 로는 우선 bo_table 과 gr_id 를 불러올 수 없는 것 같네요;;

두 값이 있어야... 그룹을 걸러내서 적용할 수 있을 것 같아요ㅠ

run_replace 에서 넘겨주는 $board, $wr_id, $w, $qstr, $file_upload_msg 이 5개 변수(?)만 사용가능한건가요...??

알려주신 이 방법을 참고해서 제 방식대로 고쳐서 적용했습니다.


add_replace('write_update_move_url', 'charter_write_update_move_url', 10, 5);
function charter_write_update_move_url($redirect_url, $board, $wr_id, $w, $qstr) {
    $bo_table = $board['bo_table'];
    $gr_id = $board['gr_id'];

    if( $gr_id == 'charter' )
        $redirect_url = short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.$qstr);
    else
        $redirect_url = short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.'&amp;wr_id='.$wr_id.$qstr);

    return $redirect_url;
}


run_replace 에 담긴 변수는 url, board, wr_id... 이 순서로 되는데 실제로는 하나씩 밀려서 $board 에 url 이 담겨있고, $wr_id 에 board 정보가 들어있고... 보기 불편해서 charter_writer_update_move_url 함수에 매개변수명을 알아보기 쉽게 변경해서 적용했습니다!

덕분에 훅으로 처리가 가능했네요! 그룹아이디가 charter 면 목록으로, 그 외는 기존 url 대로 뷰페이지로 보내게 처리했습니다! 감사합니다 :)

맨 마지막 코드에서 

return $redirect_url; 을 하지마시고 
Header('Location:'.$redirect_url);
이런식으로 해보세요`~

답변 감사드립니다! 일단 훅으로 처리하는걸 목표로 하고 있습니다ㅠ 미니님께서 알려주신 방법이 가장 원하는 방식이라... 우선 훅으로 처리를 해보고 훅으로는 처리할 수 없는 방법이라면 말씀해주신 방법으로 적용해보겠습니다!

if( $board['gr_id'] != 'charter' ) 를 
if( $board['gr_id'] == 'charter' ) 로 바꾸고 리턴 안하고 goto_url 함수를 이용해서 페이지 이동을 하시면 되시지 않나요?

어떤 부분이 안되시는걸까요? 해당 함수롤 사용 안하시는 이유가 있으신가요?

답변 감사드립니다! 일단 훅으로 처리하는걸 목표로 하고 있습니다ㅠ 훅을 사용해본 적이 없어서 알아두면 여러모로 많이 사용할 수 있을 것 같아서요... 우선 미니님께서 알려주신 방법이 가장 원하는 방식이라... 훅으로 처리를 해보고 훅으로는 처리할 수 없는 방법이라면 말씀해주신 방법으로 적용해보겠습니다!

 

hook 보다는 이 방법이 더 편해 보이네요.

https://sir.kr/g5_tip/22896

답변 감사드립니다! "글작성후 목록으로" 라고 검색을 했었는데... 왜 이 팁을 못봤을까요...;;

일단 훅으로 처리하는걸 목표로 하고 있습니다ㅠ 훅을 사용해본 적이 없어서 알아두면 여러모로 많이 사용할 수 있을 것 같아서요... 우선 미니님께서 알려주신 방법이 가장 원하는 방식이라... 훅으로 처리를 해보고 훅으로는 처리할 수 없는 방법이라면 말씀해주신 방법으로 적용해보겠습니다!

아래 코드로 변경 하시면 정상 동작 되실꺼에요

 


<?php
if( !defined('_GNUBOARD_') ) exit;
add_event('write_update_after', 'charter_write_after', 10, 5);
function charter_write_after($board, $wr_id, $w, $qstr, $redirect_url) {
    global $config;
    $gr_id = $board['gr_id'];
    $bo_table = $board['bo_table'];
 
    if($gr_id !== 'charter') {
        $redirect_url = G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table;
    }
    goto_url($redirect_url);
}

 

답변을 작성하시기 전에 로그인 해주세요.
전체 126,530 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT