포인트팡팡과 다른 애드온을 참조해서 짜집기를 해 보았습니다. 그런데 관련지식이 없다보니 뭐가 뭔지 몰라 수정할 곳도 많을 것 같고 혹시 문제를 일으키는 곳이 있을 것 같기도 합니다.

고쳐야 할 곳 좀 알려주세요..

 

붉게 처리한 부분도 이상이 없는 건지 궁금하구요. 저게 왜 필요한지 1도 모르는 사람이라서요..

그리고 포인트팡팡 애드온 첫부분에 아래와 같은 것이 잇는데 이것도 필요하다면 어떻게 넣어야 할까요 ?

 

if($called_position == 'after_module_proc'){
        //메세지가 있으면 출력후 패스
        if($_SESSION['addon_point_pangpang_msg']&&($this->act=='dispBoardContent'||$this->act=='dispBoardContentCommentList')){
            Context::addHtmlFooter( '<script type="text/javascript"> alert("'.$_SESSION['addon_point_pangpang_msg'].'"); </script>' );
            unset($_SESSION['addon_point_pangpang_msg']);
            return;
        }

 

 

------------------------------------------------------------------------------

 

 

 

짜집기한 코드

 

 

<?php
   
    if(!defined("__XE__")) exit();
    if($this->module == 'admin') return;

    if($called_position=='after_module_proc') {

      $act = Context::get('act');
      $document_srl=Context::get('target_srl');
      $oDocumentModel = &getModel('document');
      $oDocument = $oDocumentModel->getDocument($document_srl);
      $def_content = '축하합니다. 베스트 게시물로 선정되었습니다!';
      $msg_content = ($addon_info->message_content)?$addon_info->message_dontent:$def_content;
     
    
    if($act=='procDocumentVoteUp' && $addon_info->vote_count!="" && ($oDocument->get('voted_count') == $addon_info->vote_count-1))
       {
        $comObj->member_srl = 162023;
        $comObj->email_address = $comObj->homepage = $comObj->user_id = '';
        $comObj->user_name = 'Pangpang!';
        $comObj->nick_name = $msg_title;
        $comObj->password = md5((microtime() / mt_rand(1000,9999)) . $_SERVER['HTTP_USER_AGENT']);

        $comObj->module_srl = $this->module_srl;
        $comObj->document_srl = $this->variables['document_srl'];
        $comObj->content = $msg_content;
        $comObj->use_html = 'Y';

        $ccComment = &getController('comment');

        $bk_avoidlog = $_SESSION['avoid_log'];
        $_SESSION['avoid_log'] = true;
        $tmpout = $ccComment->insertComment($comObj, true);
        $_SESSION['avoid_log'] = $bk_avoidlog;
        unset($_SESSION['own_comment'][$tmpout->get('comment_srl')]);

       }
}
     
?>

  • profile
    ^^ 성공하시면 팁게에 올려주셔요 ~
  • profile
    무식하게 업로드 해봤는데 댓글이 안달리네요 ㅡㅡ;
  • profile

    $comObj->module_srl = $this->module_srl;
    $comObj->document_srl = $this->variables['document_srl'];

    이 두 라인도 뭔가 이상해 보이긴 하네요.

     

    일단

     

    $comObj->module_srl = $module_info->module_srl;
    $comObj->document_srl = $document_srl;

     

    이렇게 해보았는데 동일하게 댓글은 안달리구요.

  • profile
    $document_srl=Context::get('target_srl');
    이것도 아닌거 같아서 삭제 했으나 여전히 댓글은 안달리네요.
  • profile

    최종 ㅋㅋ 안됩니다.

    <?php

    if(!defined("__XE__")) exit();
    if($this->module == 'admin') return;

    if($called_position=='after_module_proc') {

    $act = Context::get('act');
    $oDocumentModel = &getModel('document');
    $oDocument = $oDocumentModel->getDocument($document_srl);
    $def_content = '축하합니다. 베스트 게시물로 선정되었습니다!';
    $msg_content = ($addon_info->message_content)?$addon_info->message_content:$def_content;
    $_fullUrl = getFullUrl('','mid',$this->mid,'document_srl',$this->variables['document_srl'],'comment_srl',$this->variables['comment_srl']);
    if($this->variables['document_srl']){
    $args->document_srl = $this->variables['document_srl'];
    $tmpout = executeQuery('addons.votte_reply.getDocumentExtra', $args);

    if($tmpout->data->extra_vars){
    $exvars=unserialize($tmpout->data->extra_vars);


    $args->extra_vars = serialize($exvars);
    // 최대 크기를 설정해서 오류 방지 mssql = 8000
    if(strlen($args->extra_vars) > 8000) return;
    $tmpout = executeQuery('addons.votte_reply.updateDocumentExtra', $args);
    }
    }
    if($act=='procDocumentVoteUp' && $addon_info->vote_count!="" && ($oDocument->get('voted_count') == $addon_info->vote_count-1))
    {
    $comObj->member_srl = 162023;
    $comObj->email_address = $comObj->homepage = $comObj->user_id = '';
    $comObj->user_name = 'Pangpang!';
    $comObj->nick_name = '댓글돌이';
    $comObj->password = md5((microtime() / mt_rand(1000,9999)) . $_SERVER['HTTP_USER_AGENT']);

    $comObj->module_srl = $this->module_srl;
    $comObj->document_srl = $this->variables['document_srl'];
    $comObj->content = $msg_content;
    $comObj->use_html = 'Y';

    $ccComment = &getController('comment');

    $bk_avoidlog = $_SESSION['avoid_log'];
    $_SESSION['avoid_log'] = true;
    $tmpout = $ccComment->insertComment($comObj, true);
    $_SESSION['avoid_log'] = $bk_avoidlog;
    unset($_SESSION['own_comment'][$tmpout->get('comment_srl')]);
    }
    }

    ?>

  • ?

    애드온 보다는 아래 모듈 약간 수정하면 쉽게 될듯 합니다.
    https://xe1.xpressengine.com/index.php?mid=download&package_id=22753651
    vote 모듈인데요 기본적으로 추천수 또는 비추천수 도달하면 댓글 남기는 기능이 있습니다.
    다만 게시판 이동기능이 기본이기 때문에 추천부분에 게시판 이동하지 않게만 하고 댓글 남기는 부분은 그대로 쓰면 될듯합니다.

  • ? profile
    해당 모듈은 알고 있으나 모듈은 너무 방대하고 해서 제가 수정하기에는 무리가 있을 수도 있을거 같기도 해서 아직 .....
  • ? profile
    해당모듈에서 마지막 부분 이동부분만 주석처리 하고 해 보았으나 아마도 모듈에서 제공하는 버튼을 이용하지 않으면 일부 동작이 작동하지 않는 듯 합니다. 저희는 디자인상 이 모듈의 스킨을 이용해 버튼을 노출하기는 어렵겠네요.
  • profile ?

    네 기본동작이 새로고침없이 추천하는 기능이기 때문에 기본 추천버튼은 안보이게 하고 여기서 보이게 해야 정상 작동되긴 합니다.

    기본적으로 이모듈은 스킨이 여러종류이고 직접 스킨제작도 가능하니 사이트에 맞게끔 스킨을 만들어 넣는 방법도 있을거 같습니다.

  • ? profile
    저희는 위치하고 추천전 추천후 등 구별이 되도록 커스텀이 많이 되어 있어 해당 모듈은 제가 사용하기에는 무리네요.
  • profile ?

    제가 알기로 추천버튼만 따로고 나머지는 일반 추천버튼처럼 누른것은 기본 추천db에 들어가서
    추천인 표시등 포함해서 다른것도 정상 작동하는것으로 알고 있습니다.
    추천전 추천후 구분이 기본추천DB외에 다른DB에 저장하게 해놓았다면 안되겠지만요

  • ? profile
    제가 설치하고 확인했을때는 댓글이 달리지 않으니 어찌 되었던 현재는 제가 원하는 동작이 구현이 되지 않네요. 설정은 모두 하였고 추천버튼은 표시하지 않게 하였습니다. 관리자페이지에 설명 일부동작이 모듈의 버튼을 이용해야만 동작하는 다는 것들이 어떤 것 까지 포함될지는 자세히 살펴보지 않았습니다.

    일단 댓글이 안달리는 것으로 보아 모듈의 버튼을 눌렀을때 이동과 댓글이 동작하도록 되어있지 않을까 추측만 해봅니다. 일단 이 자료는 더 살펴보지 않으려고 합니다.
  • profile ?
  • ?
    예전에 댓글돌이라는 애드온이 있었던 걸로 아는데 없어져서 아쉽네요. 그게 아마 일정 댓글수마다 "댓글수 N개 돌파!" 같은거 달아주는 기능으로 아는데, 그건 약간만 수정하면 댓글수 대신에 추천수로 해서 구현이 가능했을 텐데 말이죠...
  • ? profile
    지금은 구할수 없나 봐요?
    커뮤니티 사이트를 운영하고 있지 않아서 .. 감이 없네요.
    이런 모듈이나 애드온 정도는 있을줄 알았는데..