라이믹스 2.0.8 기준으로 비회원도 게시판 본문을 추천/비추천 및 취소할 수 있게 되어 있습니다.

그런데 댓글은 아직 그게 불가능하게 되어 있습니다.

@bros님과 대화를 주고 받다가 이 참에 관련 내용을 정리해볼까 합니다.

 

라이믹스 2.0.8 및 xedition 게시판 스킨을 기준으로 합니다.

 

 

1. 먼저 게시판 설정

 

- 게시판 관리 > 게시판 정보 > 고급 설정에 있는 "비회원 추천 허용"을 '예'로 합니다.

2.png

 

 

2. xedition 스킨 수정

 

- _comment.html을 엽니다.

- 42~45행을 수정해야 합니다. 2.0.8 기준으로 여기 링크처럼 되어 있을 텐데요. 

- 이걸 다음과 같이 수정해줍니다.

<a cond="$comment->getMyVote() === false || $comment->getMyVote() < 0" href="#" onclick="doCallModuleAction('comment','procCommentVoteUp','{$comment->comment_srl}');return false;"|cond="$is_logged || $module_info->non_login_vote=='Y'" class="voted"><i class="xi-thumbs-up"></i>{$lang->cmd_vote}{$comment->get('voted_count')}</a>
<a cond="$comment->getMyVote() > 0" href="#" onclick="doCallModuleAction('comment','procCommentVoteUpCancel','{$comment->comment_srl}');return false;"|cond="$is_logged || $module_info->non_login_vote=='Y'" class="voted"><i class="xi-thumbs-up"></i>{$lang->cmd_vote}{$comment->get('voted_count')}</a>
<a cond="$comment->getMyVote() === false || $comment->getMyVote() > 0" href="#" onclick="doCallModuleAction('comment','procCommentVoteDown','{$comment->comment_srl}');return false;"|cond="$is_logged || $module_info->non_login_vote=='Y'" class="voted"><i class="xi-thumbs-up"></i>{$lang->cmd_vote_down}{$comment->get('blamed_count')}</a>
<a cond="$comment->getMyVote() < 0" href="#" onclick="doCallModuleAction('comment','procCommentVoteDownCancel','{$comment->comment_srl}');return false;"|cond="$is_logged || $module_info->non_login_vote=='Y'" class="voted"><i class="xi-thumbs-up"></i>{$lang->cmd_vote_down}{$comment->get('blamed_count')}</a>

 

... 사실 $is_logged || $module_info->non_login_vote=='Y' 조건을 각 a 태그 전체에 걸어주면 더 깔끔합니다. 권한이 없는 경우에는 추천/비추천 및 취소 링크를 아예 출력 안 하는 것도 좋으니까요. 즉, 이렇게요...

<!--@if($is_logged || $module_info->non_login_vote=='Y')-->
<a cond="$comment->getMyVote() === false || $comment->getMyVote() < 0" href="#" onclick="doCallModuleAction('comment','procCommentVoteUp','{$comment->comment_srl}');return false;" class="voted"><i class="xi-thumbs-up"></i>{$lang->cmd_vote}{$comment->get('voted_count')}</a>
<a cond="$comment->getMyVote() > 0" href="#" onclick="doCallModuleAction('comment','procCommentVoteUpCancel','{$comment->comment_srl}');return false;" class="voted"><i class="xi-thumbs-up"></i>{$lang->cmd_vote}{$comment->get('voted_count')}</a>
<a cond="$comment->getMyVote() === false || $comment->getMyVote() > 0" href="#" onclick="doCallModuleAction('comment','procCommentVoteDown','{$comment->comment_srl}');return false;" class="voted"><i class="xi-thumbs-up"></i>{$lang->cmd_vote_down}{$comment->get('blamed_count')}</a>
<a cond="$comment->getMyVote() < 0" href="#" onclick="doCallModuleAction('comment','procCommentVoteDownCancel','{$comment->comment_srl}');return false;" class="voted"><i class="xi-thumbs-up"></i>{$lang->cmd_vote_down}{$comment->get('blamed_count')}</a>
<!--@end-->

 

 

3. comment 모듈의 conf 폴더에 있는 module.xml 수정

 

- 윗 부분에 이어 모듈 액션의 권한 수정도 해줘야 하는데요. document 모듈에는 해당 액션(추천/비추천, 취소)에 퍼미션 설정이 없는데 comment 모듈의 액션에는 그게 남아 있더라구요.

- 원래대로라면 링크처럼 되어 있을 텐데요.

- 아래와 같이 수정해줍니다.

<action name="procCommentVoteUp" type="controller" />
<action name="procCommentVoteUpCancel" type="controller" />
<action name="procCommentVoteDown" type="controller" />
<action name="procCommentVoteDownCancel" type="controller" />

 

 

4. 확인

 

- 이제 비회원도 댓글에 추천과 비추천, 그리고 추천 취소와 비추천 취소를 모두 할 수 있게 되었습니다.

 

3.png

 

photo6212844007151742256.jpg

 

 

4.png

윤삼

profile
아무래도 중급 초반 수준의 코딩 오타쿠인 것 같습니다.
  • profile
    지금 해보니 잘 되네요!! ^^;; 감사합니다.
    정회원이 아니라 추천을 못드립니다.

    |cond="$is_logged || $module_info->non_login_vote=='Y'"
    이런 문법 좀 할줄 알아야 스스로 찾아볼텐데 흙흙... 회원님들 피곤하게 해드리네요.
    올해 안으로는 꼭 풍월을 읊는 아기 선무당이 되기를 생각해봅니다.
  • profile profile
    XE 때부터 구조나 문법이 난해하다는 명성(?)이 있긴 있더라구요.
    그래도 적응만 하시면 금방 날아다니실 겁니다 ^^/
  • profile profile
    cond 은 if 조건을 XE에서 사용하기 편하도록?? 제공하는 템플릿 신문법 입니다.

    조건을 걸때 사용하는 것으로 이해 하시면 됩니다.

    || 는 조건을 걸때 연산자로 사용하느 것으로 위의 예시 에서는 두가지 중 하나만 만족해도 된다는 조건으로 걸리게 됩니다. & 로 사용할 경우 두개의 조건이 모두 만족되어야 한다는 조건으로 걸리게 됩니다.

    $is_logged 라는 변수는 로그인 했을때 가지게 되는 변수로 XE,라이믹스에서 로그인했을때 이 값을 가지도록 코딩이 되어있습니다.

    $module_info->non_login_vote=='Y'" 는 모듈(게시판 등) 의 설정값 을 의미합니다.

    $module_info->non_login_vote 라는 변수에 설정된 값을 가지게 되어있는데
    게시판 설정에서 비회원 추천 허용을 선택하고 저장을 하면 Y 의 값을 가지게 되어있습니다.


    따라서 로그인을 했거나 또는 로그인과 상관없이 게시판설정에서 비회원 추천을 허용했다면 이라는 조건을 걸리게 되어 로그인,비로그인(설정에서 허용했으므로) 모두 추천이 가능한 조건으로 사용되게 됩니다.

    이미 아시는 내용들도 있을텐데 주제 넘게 설명드린 부분도 있을 것 같네요.

    저도 아직 선무당이긴 하나... 그냥 필요해서 이것 저것 열어보면서 이게 무슨 뜻인가 결과를 먼저 보고 코드를 보니 이렇게 동작하는 코드구나 하는 식으로 쪼금 배운 입장이라 제가 이해하는 수준으로 설명해 드려보았습니다.
  • profile profile
    |cond= 이건 바로앞의 속성에 대해서만 if문을 사용할 때 사용합니다.

    일반적으로 <a cond="$~~~"></a> 이렇게 코딩한다면
    if($~~~){ echo "<a></a>" }
    와 같은 효과를 지니는데

    cond 앞에 |를 붙이면 말씀드린 속성에 대해서만 가능해지는 겁니다.

    <a href="/"|cond="$~~~"></a>

    echo "<a " if($~~~) { echo"href=\"./\"" } echo "></a>"

    와 같게되는것이죠.

    cond와 같은 신문법을 써보시면 아시겠지만 코드도 난해하고 특히 반복문의 경우 일반적인 PHP와 같은 문법도 약간 다르기때문에 이해하기 어렵습니다.

    또한 처음에 보신 항목을 보시면 reaplce하는 경우 많은양의 코드를 한꺼번에 메모리에 저장했다가 재해석 해야하므로 메모리 사용률도 높습니다.

    <a cond="$~~~"></a> 는
    <!--@if()--><a cond="$~~~"></a><!--@end--> 와 같은데 cond는 a태그모두를 메모리에 저장하고 주석문은 if문 있는곳 따로 end문 있는곳 따로 있기 때문에 a태그안에 만약 많은양의 코드가 들어가 있다면 cond보단 주석문이 훨신 더 적게 메모리가 들어가겠죠.ㅎㅎ

    그래서 질문하신 |cond 와 같이 해당 속성에 대해서만 if문을 쓰는 경우가 아니라면 주석문을 사용하세요
  • profile profile
    네, 라이믹스 + 코드 초보자 회원분들하고 같이 보면 더 좋을것 같아요.
    혼자 보기에 좀 아깝다는 생각이 듭니다. ^^

    받은만큼 다른 초보 회원분들께 돌려주는 회원이 되도록 할께요.
    (갈길은 멀겠습니다만...)
    감사합니다.
  • profile profile
    선무당이 아니라 의사면허 가지신분!!

    질답게시판+팁게시판을 검색많이해보는데요, 웹지기님이 남긴 글들이 젤 많이 본듯 해요!!
    어떤 질문에도 댓글이 다 있는것 같아요. 윤삼님하고 람보님도 많이 보였고요.

    남겨주신 글에도 항상 감사드리고 있습니다.
    감사합니다.