안녕하세요 좋아요에 대해 질문드립니다

좋아요에 새로운 기능을 더하려고 찾아봤더니, 데이터를 kboard_settings.alax_url로 보내더라고요.. 저 파일을 수정할 수 있나요?? 어디로 가는건가요??

그리고 kboard_settings.alax_url서버로 $content의 필드($content->option->age같은)를 넘겨줄 수 있을까요??

또..제가 뭘 건들다가 좋아요 버튼 모양이 이상해져서 script.js랑 thumbnail document.php를 github에서 찾아 복붙해봤는데 그래도 마찬가지네요..보니깐 '좋아요 1'에서 '좋아요 2'처럼 버튼을 누르면 글자랑 숫자 사이 공백이 한칸 더 늘어나서 숫자가 안보이는것 같은데, 왜 이러는걸까요?? 문제의 url 입니다

http://develop.spiceandwolf.co.kr/new-design/?uid=59&mod=document

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 적절히 워드프레스 프로그램을 만드시면 원하시는 필드값을 넘겨주실 수 있습니다.

    워드프레스 AJAX 관련해서는 아래 링크를 확인하시면 자세히 알 수 있습니다.

    https://codex.wordpress.org/AJAX_in_Plugins

     

    /kboard/class/KBController.class.php 파일에 보시면 아래 코드가 있습니다.

    확인해보세요^^


    /**
     * 게시글 좋아요
     */
    public function documentLike(){
        if(isset($_POST['document_uid']) && intval($_POST['document_uid'])){
            if(!@in_array($_POST['document_uid'], $_SESSION['document_vote'])){
                $_SESSION['document_vote'][] = $_POST['document_uid'];
                
                $content = new KBContent();
                $content->initWithUID($_POST['document_uid']);
                
                if($content->uid){
                    $content->like+=1;
                    $content->vote = $content->like - $content->unlike;
                    $content->updateContent();
                    echo intval($content->like);
                    exit;
                }
            }
        }
        exit;
    }

    /**
     * 게시글 싫어요
     */
    function documentUnlike(){
        if(isset($_POST['document_uid']) && intval($_POST['document_uid'])){
            if(!@in_array($_POST['document_uid'], $_SESSION['document_vote'])){
                $_SESSION['document_vote'][] = $_POST['document_uid'];
                
                $content = new KBContent();
                $content->initWithUID($_POST['document_uid']);
                
                if($content->uid){
                    $content->unlike+=1;
                    $content->vote = $content->like - $content->unlike;
                    $content->updateContent();
                    echo intval($content->unlike);
                    exit;
                }
            }
        }
        exit;
    }
     

    하지만 KBoard 플러그인 파일 수정은 가급적 피해주시고

    직접 테마 functions.php 파일이나 다른 플러그인을 생성해서 프로그램을 만들어주세요.

     

    버튼 모양은 다른 플러그인의 영향 때문인 듯합니다.

    혹은 잘못된 파일 수정으로 어딘가에 공백이 추가된 듯합니다.

  • ㅠㅠ 답변 감사드립니다...

    avatar스킨의 document.php는 건든적이 없는데도 같은 현상이 나타나는걸로 봐서 각 스킨에 있는 좋아요 button이 이상한건 아닌것같습니다...

    또, 잘 작동하던 시점의 플러그인을 제외하고 새로 설치한 것들을 비활성화 해봤는데도 비정상적으로 작동해서 플러그인 충돌도 아닌것 같습니다..

     

    이제보니까 공백이 추가되는것 말고도, 좋아요를 여러번 눌렀을 때 '이미 투표하셨습니다' alert가 뜨지도 않습니다...

    좋아요 기능에 영향을 주는 코드들이 script.js랑 KBController.class.php 말고 또 있나요??

  • /kboard/template/js/script.js 파일에 좋아요 싫어요 관련 스크립트가 있습니다.

    AJAX 요청후 숫자를 가져오는 스크립트 입니다.

    추측하자면, pjessesco님 사이트에서 AJAX 요청시 불필요한 공백이 포함된걸로 생각됩니다.

    KBoard의 좋아요 기능 뿐 아니라 다른 플러그인이나 테마에서 AJAX 호출시에도 문제가 발생될 수 있습니다.

     

    /kboard/template/js/script.js 파일에서 아래 굵게 표시된 코드를 추가해서 테스트 해보시겠어요?

    function kboard_comment_like(button){
        if(!kboard_ajax_lock){
            kboard_ajax_lock = true;
            jQuery.post(kboard_settings.alax_url, {'action':'kboard_comment_like', 'comment_uid':jQuery(button).data('uid')}, function(res){
                kboard_ajax_lock = false;
                res = parseInt(res);
                if(res){
                    jQuery('.kboard-comment-like-count', button).text(res);
                }
                else{
                    alert(kboard_localize_strings.you_have_already_voted);
                }
            });
        }
        else{
            alert(kboard_localize_strings.please_wait);
        }
        return false;
    }

  • 답변 감사합니다! 그런데 잘 안되네요....

    중간중간에 alert로 값을 확인하려해도 alert는 뜨지도 않고,

    또 다른 워드프레스 사이트를 만들어서 새로만든 사이트에 있는 script.js랑 KBController.php를 기존 사이트에 옮겨도 같은 현상이 일어나고,

    또 기존 사이트의 script.js와 KBController.php를 새로 만든 사이트에 올리면 잘 작동하네요..

    다른 방법은 없을까요?? ㅠㅠ 난해한 질문 죄송합니다..

  • 왠지는 모르겠는데 갑자기 해결됐네요..감사합니다!

  • 제가 만드려고 했던 기능은 좋아요 버튼을 누른 사람들의 분포를 보는 것입니다.

    그래서 content->option->male,female,ten,twenty...등등을 만들고 (성별, 나이대)

    KBController를 수정해서 유저가 남자면 content->option->male+=1 처럼 1씩 증가하는 코드를 만들었습니다.

     

    그런데, 좋아요버튼은 버튼을 누르면 새로고침이 없이 값이 올라가는데, 제가 새로 추가한 값들은 새로고침을 해야만 증가한 값이 보입니다..

     

    새로고침을 하지 않고도 증가한 값을 보려면 어떻게 해야 할까요??

  • /kboard/template/js/script.js 파일에서

    아래처럼 값을 업데이트 해주거나

    jQuery('.kboard-comment-like-count', button).text(res);

    아래 코드로 페이지를 새로고침 해주세요.

    window.location.reload();

    쉽게 적용하실 수 있는걸 사용해보세요.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기