hook 을 이용해서 특정게시판에서만 글 작성 후 목록으로 이동 채택완료
제목 그대로 특정 게시판에서 글 작성 시 view 페이지가 아닌 list 페이지로 이동하게 할 수 있나요...??
/bbs/write_update.php
</p>
<p>$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);</p>
<p> </p>
<p>run_event('write_update_after', $board, $wr_id, $w, $qstr, $redirect_url);</p>
<p>
하단 내용중 redirect_url 과 write_update_after 가 있길래, 혹시나 add_event 를 이용해서 해보려고 합니다...
다른 글들을 참고해서 스킨에 write_update.skin.tail.php 에
</p>
<p><?php
if( !defined('_GNUBOARD_') ) exit;</p>
<p> </p>
<p>$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);</p>
<p>
이렇게 추가를 해봤는데 이동이 안됩니다... write_update.tail.skin.php 에서는 goto_url 로만 넘길 수 있는 것 같아요;;
hook 으로 처리를 해보려고해서 위 파일 내용은 주석처리한 후에
extend에 파일하나 생성해서
</p>
<p>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;</p>
<p> $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);</p>
<p> return $redirect_url;
}</p>
<p>
이렇게 해봤는데 계속 view 페이지로 갑니다....;;
훅으로 글 작성 후 리스트로 가게할 수 있나요??
답변 5개
아 저 시간이 없어서 일단 그룹 까진 테스트 못했습니다.
아래 코드 쓰시면 네이버로 이동 되는 훅 사용 할 수 있습니다만, 그건 테스트이고
원하는 주소로 변경하세요
</p>
<p>add_replace('write_update_move_url', 'charter_write_after', 10, 5);</p>
<p>function charter_write_after($board, $wr_id, $w, $qstr, $redirect_url) {</p>
<p> $redirect_url = '<a href="https://www.naver.com';" target="_blank" rel="noopener noreferrer">https://www.naver.com';</a></p>
<p> return $redirect_url;</p>
<p>}</p>
<p>
replace 이벤트이니 add_replace 이벤트 훅을 사용해야 합니다.
참고로 $board 하시면 원본 주소가 나올꺼에요
답변에 대한 댓글 6개
gr_id, bo_table 다 담겨져있어서 가능할 것 같네요!
완성본으로 답글 다시 달아드렸어요 ㅎㅎㅎ
[code]
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.'&wr_id='.$wr_id.$qstr);
return $redirect_url;
}
[/code]
run_replace 에 담긴 변수는 url, board, wr_id... 이 순서로 되는데 실제로는 하나씩 밀려서 $board 에 url 이 담겨있고, $wr_id 에 board 정보가 들어있고... 보기 불편해서 charter_writer_update_move_url 함수에 매개변수명을 알아보기 쉽게 변경해서 적용했습니다!
덕분에 훅으로 처리가 가능했네요! 그룹아이디가 charter 면 목록으로, 그 외는 기존 url 대로 뷰페이지로 보내게 처리했습니다! 감사합니다 :)
$redirect_url = short_url_clean(G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table.($gr_id == 'charter' ? $qstr : '&wr_id='.$wr_id.$qstr));
[/code]
이렇게 하심 if 문 생략 가능합니다.
댓글을 작성하려면 로그인이 필요합니다.
아래 코드로 변경 하시면 정상 동작 되실꺼에요
</p>
<p><?php</p>
<p>if( !defined('_GNUBOARD_') ) exit;</p>
<p>add_event('write_update_after', 'charter_write_after', 10, 5);</p>
<p>function charter_write_after($board, $wr_id, $w, $qstr, $redirect_url) {</p>
<p> global $config;</p>
<p> $gr_id = $board['gr_id'];</p>
<p> $bo_table = $board['bo_table'];</p>
<p> </p>
<p> if($gr_id !== 'charter') {</p>
<p> $redirect_url = G5_HTTP_BBS_URL.'/board.php?bo_table='.$bo_table;</p>
<p> }</p>
<p> goto_url($redirect_url);</p>
<p>}</p>
<p>
http://sir.kr/data/editor/2410/978180634_1728956990.3497.gif" width="100%" />
답변에 대한 댓글 2개
결국 훅을 이용해도 안에서 goto_url 로 처리해야되나보네요!
댓글을 작성하려면 로그인이 필요합니다.
답변에 대한 댓글 2개
일단 훅으로 처리하는걸 목표로 하고 있습니다ㅠ 훅을 사용해본 적이 없어서 알아두면 여러모로 많이 사용할 수 있을 것 같아서요... 우선 미니님께서 알려주신 방법이 가장 원하는 방식이라... 훅으로 처리를 해보고 훅으로는 처리할 수 없는 방법이라면 말씀해주신 방법으로 적용해보겠습니다!
댓글을 작성하려면 로그인이 필요합니다.
if( $board['gr_id'] != 'charter' ) 를
if( $board['gr_id'] == 'charter' ) 로 바꾸고 리턴 안하고 goto_url 함수를 이용해서 페이지 이동을 하시면 되시지 않나요?
어떤 부분이 안되시는걸까요? 해당 함수롤 사용 안하시는 이유가 있으신가요?
답변에 대한 댓글 1개
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
두 값이 있어야... 그룹을 걸러내서 적용할 수 있을 것 같아요ㅠ
run_replace 에서 넘겨주는 $board, $wr_id, $w, $qstr, $file_upload_msg 이 5개 변수(?)만 사용가능한건가요...??