Q&A

자료실 기능을 갖다떼붙이려고 합니다.

1. 스킨 부분에서 추가되어야 하는 부분.

1. 우선 스킨에서 코멘트 부분 기능을 가져왔습니다.

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

코멘트 폼안에 넣었습니다.

2. 그리고 코멘트 글쓰기 폼 위에 별점 선택버튼들도 넣어주었습니다.

<ul class="starPoint">
                <li><button type="button" data-point="1">1</button></li>
                <li><button type="button" data-point="2">2</button></li>
                <li><button type="button" data-point="3">3</button></li>
                <li><button type="button" data-point="4">4</button></li>
                <li><button type="button" data-point="5">5</button></li>
            </ul>

 

이렇게 하면 기본적으로 스킨 부분은 끝이 난것 같더군요. (읭 스럽지만 소스 상에서는 그렇더군요;)

이제 뭔가 모듈 부분을 수정하면 될 것 같은데, 

 

자료실 모듈과 게시판 모듈은 뭔가 룰셋이나 필터 부분이 서로 좀 다릅니다.

코멘트 부분을 담당하는 룰셋, 필터가 자료실엔 있는데, 게시판엔 없어요.;

 

룰셋이 어떤 건지는 코노리님 글에서 조금 알아봤습니다.

https://www.conory.com/index.php?mid=note_develop_web&document_srl=15676&mode=default

 

없어도 되는 건 아닐까 싶어서요.'_';;

원래 게시판에는 코멘트 부분은 룰셋이나 필터가 없어서 그냥 넘어갑니다. 자료실엔 있지만;

resource/rulset/insertComment.xml

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

resource/filter/insert_comment.xml

<node target="star_point" required="true' />

<param name="star_point" target="star_point" />

 

이것들은 게시판 모듈에는 해당 파일들이 없고 해서 그냥 넘어갑니다.

[질문1] 룰셋이나 필터는 없어도 되나요?


2. 모듈 파일에서 추가되어야 하는 부분. - resource 에서 찾아보기

그럼 이제 남은 건 중요하다고 생각되는 모듈 파일인데요.

 

resource/resource.controller.php

 

1) $args = context::gets('package_srl', 'item_srl', 'star_point'. 'content');

글쓰기 할 때 이러한 정보들을 스킨에서 디비로 저장하는 기능인가봅니다.

package_srl : 게시물 정보

item_slr : 게시물 정보

star_point ; 별점

content : 글내용

코멘트를 남길 때인지 모르겠지만 여튼 이런 정보들이 기본적으로 글쓰기할 때 넘어가는 정보인가봅니다.

 

※ board 모듈과 비교

resource 모듈에서는 $args = context:gets~~~ 라고 되어있는데,

board 모듈에서는 

$obj = Context::getRequestVars();

이렇게 되어있습니다. 

[질문2] board 모듈에서 getRequestVars() 는 어디에 정의가 되어있는 건가요??

resource 모듈에서는 context::gets()라고 하나씩 입력해주던데, board 모듈은 그냥 getRequestVars()라고 해버리고 마네요. (난감;;)

참조 : 
https://xe1.xpressengine.com/qna/22071002
https://xe1.xpressengine.com/qna/18307267


2) if(!args->star_point || !args->content || !$args->item_srl) return new Object(-1, 'msg_invalid_request');

만약 1)의 4가지 정보가 없으면 꼭 입력해라는 메시지가 뜬다, 뭐 그런 뜻인가 봅니다.


3) $args->voted_count = $args->star_point;

추천수랑 별점을 같게 생각한다는 말인거 같구요.

※ board 모듈에서 첨부되어야 하는 부분


4) $star_args->voted = $package->voted+$args->star_point;

추천수는 패키지추천수랑 별점수를 더한 값이다.. 라는 뜻 같구요.

※ board 모듈에서 첨부되어야 하는 부분


5) $star_args->voted = $item->voted+$args->star_point;

추천수는 아이템추천수 더하가 별점수인것 같습니다.

자료실은 특이하게 게시물이 item 이란 것과 package라는 것 2가지라서 아마 4), 5) 이렇게 두가지로 더 써주는 것 같구요.


그냥 게시판에서는 이런 구분 없이 게시물 정보 하나이기 때문에..

 

이걸 -_- board.controller.php 파일의 어딘가에;; 입력해주면 될 것 같습니다;;

1), 3), 4) 이렇게만 기본 게시판 모듈에서 수정해주면 될 것 같습니다.

맞나요?;;


우선 자료실에서 보면 1)은

function procResourceInsertComment() {

이런 procResourceInsertComment() 라는 펑션에 정의가 되어있어서,

자료실 그대로 게시판에서도 동일하게,

function procBoardInsertComment()

이 정의 안에 1), 3), 4)의 정보를 넣어주면 될 것 같습니다.

 

이제 이 명령어들을 board 모듈의 controller.php 파일에 넣을 정확한 위치가 필요하겠습니다.

다시 자료실에서 1), 3), 4)의 정보들이 어디에 있는지 보면

$output = $oCommentController->insertComment($args);

이렇게 insertComment($args); 라는 부분 위에 arg로 작성되어있습니다.

이제 board 모듈에서 inserComment 로 검색해보면,

$output = $oCommentController->insertComment($obj, $bAnonymous);

이렇게 obj로 정의되어있는 것 같습니다.

2)는 크게 필요없을 것 같아서 패스하고 (확실하진 않음)

1), 3), 4)만 넣어보려고 한다면;;

 

3. board 모듈에 넣어주기

A. board/board.controller.php 310줄 쯤에,

$obj->voted_count = $obj->star_point;

1)의 정보는 위와 같이 입력했습니다.


이제 3) 과 4) 가 남았는데,

3)도 자료실에서 보면, 다시 검색을 이제는

$star_args

로 검색해보면;;

 

a) $star_args->module_srl = $this->module_srl;

b) $star_args->package_srl = $args->package_srl;

c) $star_args->voted = $package->voted+$args->star_point;

d) output = excuteQuery('resource.plusPackageStar', $star_args);

e) $star_args->module_srl = $this->module_srl;

f) $star_args->package_srl = $args->package_srl;

g) $star_args->item_srl = $args->item_srl;

h) $star_args->voted = $item->voted+$args->star_point;

i) $soutput = excuteQuery('resource.plusItemStar', $star_args);

 

이렇게 9가지가 나오는데 보면 d) 와 i)를 보면 package와 item 이렇게 두가지가 반복되어있기 때문에

반복된 부분을 제외하고 board 모듈에서는 a)~d) 까지만 입력해주면 될 것 같습니다.

[질문3] 이 부분은 전혀 모르겠습니다 ㅠ_ㅠ;


4. DB 쿼리입력

중요한  plusPackageStar  라는 놈이 나타나는데, 이걸 다시 검색해보면 ㅠㅠ

resource/queries/plusPackageStar.xml 이란 놈이 나타납니다 ㅠㅠ

아직 queries라는 놈은 잘 모르지만 직감하건데 아마 디비에 직접적으로 쿼리를 날려서 입력해주는 xml 파일들 같아요 ㅠㅠ (이제 토할것...같..)

 

해당 파일을 찬찬히 살펴보면

<query id="plusPackageStar" action="update">

<tables><table name='resource_packages' /></tables>

<columns><column...

<conditions><condition ...

</query>

 

에효. 쿼리 아이디에서 

3-4) output = excuteQuery('resource.plusPackageStar', $star_args);

이게 이제 파악이 되네요.

ID란 놈을 쿼리 실행한다는 뜻이네요. xml 파일을 통해서 디비 쿼리를 입력해주네요.

xml에서 해당 id를 실행하면 해당 테이블에 해당 칼럼에 controller.php 파일에서 시키는 것들이

이제 xml에 해당 디비에 입력이 된다는 뜻 같네요.

 

큰숫자2번에서 입력하려고 하는 것들을 게시판 모듈에서도 쿼리 xml 파일을 만들어야 하는거죠?

이온디 Lv. 13
# 라이믹스 스킨 제작은 어디? >>>> XE 레이아웃, 라이믹스 스킨제작은 이온디에서 커스터마이징해드립니다.
# 빠른 라이믹스 커뮤니티용 호스팅을 찾고 계신가요? >>>> 이온디호스팅 서비스는 PHP8 & Redis 서버 캐시를 활용하여 라이믹스에 최적화된 호스팅 서비스를 제공해드립니다. (서버세팅시 웹패널, 내도메인메일서비스도 함께 구축해드립니다.)
https://eond.com

댓글 0