Q&A

게시글에 평점 부여 애드온을 만들면서 어려워서 자문을 구합니다.

2025.02.14 10:30
151
1
CMS/프레임워크 Rhymix 2.1
개발 언어 PHP 7.4
문제 페이지 주소 비공개 (작성 후 5일 경과)

라이믹스 게시글 마다 로그인 회원이 평점을 부여 하는 기능을 만들어 볼려고 애드온을 만들다 보니

애드온으로는 DB에 테이블을 생성 시킬 수가 없어서 테이블 생성만 하게 간단한 모듈을 만들었고

애드온에서 모든 것을 처리하게 했다.

만들다 보니 이래 저래 참 어렵네... 모듈은 더욱 더 어려워 내 힘으로는...

 

애드온에서 게시글 본문 아래 자리를 잡을려고 하니 이상하게 자리를 잡으면 평점이 클릭 안되고

평점이 클릭되게 하니 자리에 없고

그래서 직접 게시글 본문안에 코드를 넣는 방법을 적용했다.(비급한 변명입니다!!!)
 

<div cond="!$mi->rating_stars == ''" class="rating-wrapper">
<div class="rating-title">
<span>이 글의 평점</span>
<span class="count">({number_format($rating_count)}명 참여)</span>
</div>

<div class="rating-stars">
<!-- 평균 평점 표시 -->
<div class="avg-rating">
<span class="label">평균 평점:</span>
<span id="avg_rating_stars" class="stars">
<!--@for($i=1; $i<=10; $i++)-->
<span class="star {$avg_rating >= $i ? 'filled' : ''}" data-value="{$i}">★</span>
<!--@end-->
</span>
<span id="avg_rating">{number_format($avg_rating, 1)}</span>
</div>

<!-- 사용자 평점 입력 -->
<!--@if($logged_info)-->
<div class="user-rating">
<span class="label">내 평점:</span>
<span id="user_rating_stars" class="stars">
<!--@for($i=1; $i<=10; $i++)-->
<label class="star {$user_rating >= $i ? 'filled' : ''}" data-value="{$i}">
<input type="radio" name="rating" value="{$i}" style="display:none;" {$user_rating == $i ? 'checked' : ''}>

</label>
<!--@end-->
</span>
<span id="user_rating">{$user_rating ? number_format($user_rating, 1) : '평가하기'}</span>
</div>
<!--@else-->
<div class="login-required">
<p>평점을 남기려면 로그인이 필요합니다.</p>
</div>
<!--@end-->
</div>
</div>

이리 저리 해서 거의 완성을 했는데 이번에 AJAX가 작동을 안한다.

그것이 내 실력으로는 AJAX 때문인지 다른데서 문제를 일으키는지도 알 수가 없다

며칠을 고민하고 A.I들에게 물어봐도 정답이 없네 으으으~

001.JPG

002.png

 

이 글을 보시는 고수님들이랑 이 기능이 필요하신 분들이 코딩을 보시고 답을 주시기를 고대합니다.

테스트 사이트 : https://moonhouse.co.kr/book

Github 주소 https://github.com/moonhouse-80san/rating

 

증상 :

테스트 페이지에서 평점을 주면 오류 메세지가 츨력됩니다. 

F5 눌러 리로드하면 정상적으로 부여된 평점이 보입니다.

DB의 테이블에도 정상적으로 잘 적용 됩니다.

 

p.s 이렇게 혼자만 코드 짜서 낑낑 거리다보니 새로 오픈하는 사이트에서는 이런 게시판이 하나 생겼으면 좋겠네요.

일명 "단체지성 게시판" 

댓글 5

  • 2025.02.14 11:57 #1858927

    예전에 숭숭군님이 배포하셨던 평점 애드온인데 이거 참고하시면 되지 않을까요?

    PHP7에서 작동했는데 PHP8에서는 작동하지 않아서 사용못하고 있어요.

    숭숭군님 사이트가 지금 정상작동하고 있지 않아서 파일 첨부합니다.

    다운 받으시면 삭제하겠습니다.

  • 2025.02.14 12:10 #1858932
    이 애드온은 저도 가지고 있는데 좋아요를 평점으로 치환하는 형식이라 어딘가 애매 하더라구요.
    그래도 한번 다시 봐야 겠네요.
    감사합니다.
  • 2025.02.14 12:37 #1858940

    exec_json 으로 rating.procRatingInsert 호출시 rating 모듈을 호출할텐데, module.xml 에 해당 proc 에 관한 액션정의가 없어서 문제가 생기는것 같습니다. module.xml 에 해당 액션을 정의후 테스트 해보세요. (컨트롤러도 모듈쪽으로 옮겨기는것이 더 나을것 같습니다.)

  • 2025.02.14 14:13 #1858955
    너무 애드온으로 처리하려 하지 마시고 모듈로 해보세요.
    애초에 테이블 생성부터 모듈이 해야될 일이라고 생각되는데 너무 애드온으로 처리하려고 하시는것같아요.
    구 XE 모듈 형태면 저도 시도 못했는데 현재 라이믹스 새 모듈 구조로는 저도 만들었습니다.
    몇가지 규칙들만 조심하면 대부분 너무 쉽게 몇줄 안쓰고도 작동합니다.
  • 2025.02.14 14:51 #1858969
    그러니까 애드온으로는 구현이 쉽지 않다는 거네요.
    근데 모듈에 대한 이해가 부족하여 설치된 모듈에 설정 자체를 들어가는 것 부터 어려워서 힘드네요.
    저는 이 애드온에 대한 모든 권리도 주장하지 않겠으니 누가 모듈로 만들어 주면 좋겠네요.