star_point

ㅎㅎ 자료실 모듈에서 이 놈을 찾고 있습니다. -_-;

https://github.com/xpressengine/xe-module-resource
https://www.slideshare.net/flyskykr/xe-34832050
https://xe1.xpressengine.com/qna/22781283

 

1) 먼저 코멘트 관련 파일은 스킨에서

include.package.html 파일에 코멘트 쓰기 부분이 있더군요

<form action ... 아래에

<input type="hidden" name="star_point" value="" />

이 부분을 추가해줬더군요. 스킨 단에서는 이 부분 뿐이었던거 같아요 -_-;;

star_point가 추천수인데, 추천수를 1개에서 5개로 지정해서 5는 추천5개로 지정하는 것 같더군요.

 

1-1) 저는 이걸 추천5번 한 사람, 추천 4번 한 사람, 추천3번 한 사람 이렇게 따로 디비에 저장을 해볼려고 하는데,

이건 어떻게 하면 되는지 잘 모르겠습니다.

 

2) 1)에 이어서 스킨에서는 include.package.html 파일에서만 관련 부분을 확인할 수가 있었고요. 그리고..

모듈단에서는 resource.controller.php 파일에서만 이 부분이 있더군요.

$args->voted_count = $args->star_point;
$star_args->voted = $package->voted+$args->star_point;
$star_args->voted = $item->voted+$args->star_point;

대략 이 정도인것 같더군요.. -_-; 아직 이게 무슨 뜻인지는 잘 파악을 못했습니다.

 

3) rulset 디렉토리 아래에도 관련 파일이 있더군요. insertComment.xml 파일이었습니다.

코멘트를 입력할 때 1)과 관련해서, 

<field name="star_point" required="true" rule="number" />

form action 이 부분에 들어가는 것들이 다 field 로 넣어지는 것 같네요.

 

4) lang/lang.xml 에도

<item name="start_point"> 부분이 있고요.

이건 그냥 모듈에서 표현되는 부분을 언어로 정의한 것 같고요.

 

5) tpl/filter/insert_comment.xml 이 파일에도 있는데

필터 디렉토리 아래 있는 xml 은 잘 모르겠어요.

 

6) 마지막으로 별점 스크립트를 담당하는, tpl/js/resource.js 파일 안에도 제이쿼리 스크립트로 있고요. 이건 프론트 단에 해당하는 것이고..

 

에고고..

어쨌든 대략의 파일 위치는 알았습니다. ㅠㅠ

~만은 제가 원하는 것을 구현하는 것과는 조금 차이가 있네요.

 

여기서 추가로 해야할 것이, 별점갯수별 클릭횟수?

그러니깐 별1개를 선택한 사람이 몇명인지, 2개를 클릭한 사람이 몇명인지 카운트를 해주고 싶거든요.

 

따로 디비 필드를 추가해줄 수가 있나요?;;

phpmyadmin에서 XE 모듈 관련한 테이블을 보면 xe_module_config 라는 테이블이 있던데, 

여기에서 혹시 이런 것들이 가능한가요?

 

  • ?
    별점기능이란느게 제대로 만들려면 고려해야할게 은근히 많아요 ( 생각보다 실제해보면 복잡하죠 )

    만드실때 고려하셔야할 부분이..

    별점댓글 삭제시 별점이 차감되도록 처리
    별점수정 가능하게 처리
    동일회원이 별점을 여러개 이상 쓸 수 있게 할건지 여부 ( 또는 기간 경과 후 가능 )
    별점을 안 쓰고 댓글만 작성가능하도록 ( 대댓글 등의 경우 떄문에 )
    별점순으로 게시글 정렬기능
    정확한 정렬을 위해 소수점까지 계산되도록 처리

    여기서 만들다 보면 더 요구하는 경우도 있더군요
    전문가 별점이라고 해서 일반 별점과 다른 별도별점. 총합계산시 가중치 부여
    댓글내용을 필수화하지 않고, 별점만으로도 가능 ( 즉, 별점만도 되고, 별점+댓글로도 되고 )


    Core 수정을 거의 없이 하려면, 추천수 기능을 잘 활용해서 만드시면 됩니다.
    별점평가한 사람수를 꼭 저장하는게 좋은데 이건 다른 칼럼 안 만들고 하려면 비추천수 칼럼을 편법적용하시면 되고요
    ( 정확한 정렬을 위해서는 평균평점을 저장하는게 아니라, 그냥 총평점합 / 총평가자수 만 기록하고 즉석에서 나누는게 좋거든요 )

    중복평가 방지등은 추천내역 쪽을 활용하면 되고
    댓글삭제시 평점삭제등을 하려면 댓글자체와 추천내역 쪽에 변수로 연결고리를 하나 추가해주셔야합니다

    제대로 만들려면.. 생각보다 복잡한 모듈이예요 ^^;;;
  • ? profile

    답변 감사합니다.

    말씀해주신 만들 때 고려해야하는 부분은 좀 더 전문적인 별점평가시스템 같고요 ㅠ; (제 능력 밖이라^^;)
    저는 자료실 별점 기능대로 사용해볼려고 합니다. 말씀하신 추천수를 활용해서요. ^^;
    자료실은 이렇게 되어있더라구요
    1) 댓글은 1번만 입력가능하고
    2) 별점수정은 안되고
    3) 별점 써야 댓글이 되고
    4) 별점은 추천으로 등록되고
    이 정도에서 마무리한다면 말씀하신 부분까지는 안해도 될 것 같아요.
    별점이 추천으로 등록되니, 추천수 정렬을 사용하면 이것도 쉽게 해결이 되고요 ㅎ;
    말씀대로 추천수 기능을 활용해서 해볼려구요.
    비추천수 칼럼을 이용하는 방법이 있군요 -_-;;

     

    그런데 궁금한 점이 하나 있는데,
    각 별점평가한 사람수를 1점 몇명, 2점 몇명, 3점 몇명, 4점 몇명, 5점 몇명 이렇게 5개의 칼럼(?)이 필요한데,
    비추천수 칼럼은 한 칸인데 여기 5개의 정보를 담아둘 수가 있나요?;;

     

    현재 자료실처럼 댓글을 1회만 달 수 있으니깐 별점 평가한 전체수는 댓글수로 대체가 가능할 듯 하고요. ^^;

  • ?

    간단한 구조로 하실거면..
    추천합계를 추천수에 담고, 추천한 사람수를 비추천수에 담고.. 평점노출시에는 추천수/비추천수 로 표시해주면 되요
    각 별점별 평가한 사람수는 추천내역을 이용하면 되죠. 추천내역에 point 라는 칼럼이 있으니 여기에 유저가 선택한 추천값을 기록하고, 해당 글의 추천내역을 뽑으면 각 별점별 추천한 사람수를 구할 수 있을거예요

    아니면 별점과댓글 을 반드시 같이 써야하면, 댓글테이블 내부에 별점칼럼을 신규로 추가해서  댓글내역을 추출해서 별점분포표를 판단하는 방법도 있을테고요

  • ? profile
    말씀해주신게 제가 아직 실력이 모자라서 이해가 안되는 부분이 있어서 실례지만 한번 더 여쭤봅니다^^;;

    http://fun.eond.com/misc/client20170329/Chart.js/samples/charts/area/basic.html
    이렇게 본문에 노출시킬려고 합니다.

    "1점(최악)~5점(짱짱)"

    1점 선택한 사람 별로 그 수를 '합계'해서 최악으로 카운트하고
    5점 선택한 사람을 합계해서(=비추천수를 활용했을 시) 짱짱으로 카운트하면 되는데,

    1점=몇명
    2점=몇명
    3점=몇명
    4점=몇명
    5점=몇명

    비추천수를 활용한다고 했을 때 이렇게 각 점수별로 카운트가 필요한데요, 비추천수 칼럼 1개로 저 5개를 다 카운트가 가능하다고 하신 말씀이시죠?

    그게 바로 추천내역을 이용하면 된다는 말씀이시고요?;
    추천내역이란 건.. 세진님께서 개발하신 sejin7940_vote 이나, 추천/비추천신고모듈(https://xe1.xpressengine.com/index.php?mid=download&package_id=22753651&release_id=22754957)을 이용하면 되는 건가요?

    아니면 그것보다는 직접 바로 db테이블에 xe_document_voted_log 를 확인해보면 된다는 말씀 맞으시죠?;;
    여기서부터 또 점점 어려워지는군요. ㅎㅎ
    여기서 이 voted_log에서 문서별로, 멤버별로 -포인트를 합산해서 뿌려주면 된다는 말씀이시군요-_-?;
    하는 방법은 모르지만 대략 이런 말씀이신거죠?;

    참조
    https://xe1.xpressengine.com/tip/18980329
    https://chongmoa.com:45183/xe/8930
    https://funnyxe.com/XEtip/230972
    http://linfree.com/computer_linux/396
  • ?
    xe_document_voted_log 테이블에 보면 point 라는 칼럼이 있어요
    보통은 1 이 들어가는데 ( 추천이 +1 개념이니 )
    이 값을 1 이 아니라 각 평점작성자가 선택한 별점값이 들어가게 하는거죠
    ( 칼럼을 굳이 추가할 필요 없이 쓸 수 있는 방법이여서 )

    그 후 내역을 알고플때 document_voted_log 의 내역을 분석하면 되겠죠
  • profile
    모듈로 만드셔야 되요.... 디비 업데이트는 스킨에서 js 로 하시면 되구요...