커뮤니티

CMS/프레임워크 Rhymix 2.1
개발 언어 PHP 8.4

게시판 모듈의 default 스킨을 수정해서 `faq` 커스텀 스킨을 만들어 보고 있습니다.

 

일반 게시판을 사용해서 자주묻는 질문 (faq) 을 구현하기 위해 게시물 목록 페이지에서

본문까지 모두 확인하도록 만들고, 게시물 보기 페이지는 사용하지 않으려고 합니다. 

 

그래서 글 생성 또는 수정 시 폼 전송 후 게시물 보기가 아닌 게시물 목록으로 이동하려고 하는데

라이믹스는 폼 전송 후 이동 하는 페이지 기본 값이 게시물 보기 페이지로 이동 되네요.

 

컨트롤러를 수정하지 않고, write_form.html 이나 faq 스킨 내부의 파일만을 수정해서

게시물 목록으로 리다이렉트 되도록 구현하려면 어떻게 해야 할까요?

 

<input type="hidden" name="success_return_url" value="{getUrl('', 'mid', $mid)}" />

 

위 요소를 삽입해 보았지만 적용이 안되고, form action 을 수정해도 안되어 막혀있습니다.

 

https://github.com/nc2U/rhymix <--- 소스코드

 

app/_rhymix 를 서브모듈로 원본소스 그대로 사용하고 ,

app/custom/layouts 와, modules 를 커스터마이징해서 서브모듈의 해당 경로에 연결해서 사용하는 방식으로 하고 있고 

 

app/custom/modules/board/skins/faq <-- 해당 스킨 경로입니다.

(서버에서는 /var/www/html/modules/board/skins/faq 에서 사용되고 있음) 

 

도움 주신 분들 미리 감사드립니다.

austin Lv. 1

댓글 4

  • 2025.08.10 08:53 #1914174

    <form action="/" method="post" class="rx_ajax" data-callback-success="callbackFunction"> 대략 이런 구성으로 폼의 class에 rx_ajax 추가, 그리고 제출 성공후 실행할 콜백함수를 지정하는 data-callback-success="" 속성도 추가해주세요. 제출후 뭘 할지는 callbackFunction 안에 원하시는대로 작성하시면 됩니다. 

     

    // mid 로 이동

    function callbackFunction(res) { location.href = '/' + res.mid; }

     

    // rx_ajax 폼에 대한 더 많은 내용은 https://github.com/rhymix/rhymix/pull/1206 여기서 확인하시면 됩니다.

  • 2025.08.11 00:58 #1914247

    그런데 적용이 안되네요.. 어차피 faq 은 관리자만 등록하는 기능이라 폼 전송 후 게시물 보기 경유해서 목록으로 돌아 오는 것으로 타협했습니다. 그래도 답변 주셔서 감사합니다.

  • 2025.08.11 01:27 #1914255

    로컬에서 테스트해봤는데 잘됩니다. 아래 기진곰님이 작성하신 부분을 결합해서 다시 정리해드리자면,
    form에서 obsubmit="procFilter(this, insert_document)" 부분을 제거하고 <input type="hidden" name="success_return_url" value="{getUrl('', 'mid', $mid)}" /> 이런부분도 필요없이...
    <form action="/" method="post" class="rx_ajax" data-callback-success="성공시콜백함수"> 처럼 폼을 만들어서 콜백함수안에 location.href = '/' + res.mid; 를 작성해보세요.

     

    <form action="/" method="post" class="rx_ajax" data-callback-success="callbackFunction">

        <input type="hidden" name="mid" value="{$mid}" />

        <input type="hidden" name="act" value="procBoardInsertDocument" />

        <input type="hidden" name="content" value="{$oDocument->getContentText()}" />

        <input type="hidden" name="document_srl" value="{$document_srl}" />

        ... ...

    </form>

     

    <script>

    function callbackFunction(res) { location.href = '/' + res.mid; }

    </script>

     

  • 2025.08.10 11:07 #1914187

    대부분의 게시판 스킨은 글쓰기 폼 제출시 obsubmit="procFilter(this, insert_document)" 이런 식으로 필터 적용을 위한 함수를 호출하도록 되어 있는데, 이 함수에서 ajax로 제출 후 글읽기 화면으로 리다이렉트하는 것까지 멋대로 다 해버립니다. 그래서 action이나 그 밖의 속성을 변경하는 것은 별로 의미가 없습니다.

     

    리다이렉트를 방지하려면 onsubmit 속성을 제거하고, 윗분 댓글처럼 폼 제출 관련 코드를 따로 구현하면 됩니다.

     

    기존 구조에서 ajax 제출 후 리다이렉트를 담당하는 completeDocumentInserted 함수를 손보는 방법도 있겠습니다만... 이런 스킨이 아니라 코어에서 담당하는 부분이기 때문에 임의로 함수를 덮어씌우면 부작용이 생길 수도 있어요.