게시판 글에 추천에 클릭하면
비회원 추천을 허용하지 않은 경우
로그인이 필요합니다라는 메시지창이 뜨는데
그 후로 바로 로그인 화면으로 이동시키고 싶은데 어떻게 할 수 있을까요
PHP | PHP 8.3 |
---|---|
CMS | Rhymix 2.1 |
게시판 글에 추천에 클릭하면
비회원 추천을 허용하지 않은 경우
로그인이 필요합니다라는 메시지창이 뜨는데
그 후로 바로 로그인 화면으로 이동시키고 싶은데 어떻게 할 수 있을까요
1. 현재 사용한 코드입니다.
1) php
@if($document->getMyVote())
<a href="javascript:;" onclick="do_doc_VoteSubmit('document','procDocumentVoteUpCancel','{$document->document_srl}'); return false;">좋아요취소 <span class="cnt">{$document->get('voted_count') ? $document->get('voted_count') : ''}</span></a>
@else
<a href="javascript:;" onclick="do_doc_VoteSubmit('document','procDocumentVoteUp','{$document->document_srl}'); return false;">좋아요 <span class="cnt">{$document->get('voted_count') ? $document->get('voted_count') : ''}</span></a>
@endif
2) js
function do_doc_VoteSubmit(module, action, target_srl) {
saveScrollPosition(); // 스크롤 위치 저장
shouldRestoreScroll = true; // 스크롤 복원을 활성화
var params = { 'target_srl': target_srl, 'cur_mid': current_mid };
exec_json(module + '.' + action, params, function () {
location.reload();
});
}
2. 조언해주신대로 js를 이렇게 수정해봤습니다.
function do_doc_VoteSubmit(module, action, target_srl) {
saveScrollPosition(); // 스크롤 위치 저장
shouldRestoreScroll = true; // 스크롤 복원을 활성화
const params = { target_srl: target_srl, cur_mid: current_mid };
// Ajax 요청
exec_json(module + '.' + action, params, function (response) {
if (response.status === 'error') {
// 로그인이 필요한 경우 처리
alert(response.message);
if (response.redirect_url) {
window.location.href = response.redirect_url; // 로그인 페이지로 이동
}
} else if (response.status === 'success') {
// 성공 처리
alert(response.message);
location.reload(); // 페이지 리로드
}
});
}
이렇게 해도 response 답이 없고 그대로 '로그인이 필요합니다' 라는 메세지만 뜨고 말아버리네요.
혹시 어디를 찾아봐야할까요.
아마 위 코드는 document.controller.php에서
function procDocumentVoteUp() 이 함수를 먼저 타서 그런거 같은데요.
네번째 인자로 넘기신 함수에서 리다이렉트 후 return false; 해보세요.
브라우저에서 실행 순서를 멋대로 최적화하는 건지,
리다이렉트 명령을 내린 후에도 코드가 계속 실행되더라구요;;;
로그인 여부에 따라 스킨 소스에서 미리 거르는 방법도 있을 것 같습니다.
@auth
@if($document->getMyVote())
좋아요취소
@else
좋아요
@endif
@endauth
@guest
<a href="로그인화면">좋아요</a>
@endguest
자체 함수를 만들어서 달 수 밖에 없을려나요