테스트 사이트 - 개발 중인 베타 버전입니다

게시글 분류 2개 이상 중복 체크 시 최신글 latest 가져오는 법.. 채택완료

https://sir.kr/g5_tip/12256

 

위 글 참고하여 현재 분류(ca_name)를 중복 체크하여 사용하고 있습니다.

 

분류가 하나일 때는 분류별로 최신글 가져오는 방법이 많지만, 분류가 2개 이상일 때는 어떻게 뿌려줘야 할 지가 궁금합니다.

 

latest로 A 라는 분류를 포함하는 게시글만 불러오고 싶다고 가정 시,

 

분류가 [A, B, C, D] 인 글은 불러와지고 A가 없이 [B, C, D] 인 글은 불러오지 못하도록요..

 

질문이 두서가 없는데

방법 아시는 분 계신가요?

댓글을 작성하려면 로그인이 필요합니다.

답변 2개

채택된 답변
+20 포인트

latest 의 경우

https://github.com/gnuboard/gnuboard5/blob/master/lib/latest.lib.php

에 있는 function latest 를 거치는것 같고

 

함수 인자 및 쿼리를 다음처럼 수정해 볼수 있습니다.

</p>

<p>function latest($skin_dir='', $bo_table, $rows=10, $subject_len=40, $cache_time=1, $options='', $ca_name='')</p>

<p>{</p>

<p>    ...</p>

<p>    $sql = " select * from {$tmp_write_table} where wr_is_comment = 0 order by wr_num limit 0, {$rows} ";</p>

<p>    if (empty($ca_name) == false) {</p>

<p>        $sql = str_replace('where wr_is_comment = 0', "where wr_is_comment = 0 and instr(ca_name, '${ca_name}') > 0", $sql);</p>

<p>    }</p>

<p>    ...</p>

<p>}</p>

<p>

로그인 후 평가할 수 있습니다

답변에 대한 댓글 9개

라테 함수를 건들면 다른것들이 문제 생기지는 않을까 궁금합니다.
인자를 추가하는 방식이기 때문에 기존 사용처는 그대로 유지하면 될것 같습니다.
답변 감사드립니다.
latest 위와 같이 수정 후 latest 는 어떻게 주면 될까요?

현재 게시판 view.skin.php 에서 게시판 글 제목의 키워드를 포함하는 글을 뿌려줘야해서

<?php echo latest("gn-fdMb", "notice", 3, 60, "", "$view[wr_subject]"); ?>

이렇게 들어가있는 상태입니다.
6번째 인자가 추가되는 방식이므로 끝에 추가인자를 전달하면 됩니다.
[code]
<?php echo latest("gn-fdMb", "notice", 3, 60, "", "$view['wr_subject']", 'A'); ?>
[/code]
말씀해주신대로 적용하였지만, 여전히 분류에 포함되지 않는 글들이 함께 불러와집니다..
https://sir.kr/manual/g5/145
링크가 도움이 될지 모르겠습니다.
캐시파일 삭제해도 다 불러와집니다.
ca_name 이 A,B,C,D 이렇게 적혀있다보니 저 전체 덩어리를 분류명으로 인식해서 그런지 A만 포함되어 있는 걸 못 찾는 느낌입니다.
오! 이제보니 관리화면에서 캐시파일을 삭제하고 새로고침해야만 목록이 보여지네요.

현재 latest 함수는

<?php echo latest("gn-fdMb", "notice", 3, 60, 0, "", "$view[ca_name]"); ?>

위와 같이 들어가있는 상황입니다.

게시글로 접속 시 캐시를 무조건 사용하지 않으면 목록이 잘 보일 것 같네요!
해결했습니다!
config.php 에서 캐시사용 true를 false로 바꿔주니 배르만님 답변이 잘 적용됩니다.

정말 감사드립니다.

댓글을 작성하려면 로그인이 필요합니다.

'mobile'         AND a.bo_use_cert = ''         AND a.bo_table NOT IN ('free','gallery','qa')         AND (             a.bo_table IN (SELECT bo_table FROM {$g5['category_table']} WHERE ca_name = 'A')             OR c.ca_name = 'A'         )         ORDER BY b.gr_order, a.bo_order"; $result = sql_query($sql); ?>

서버쪽을 이렇게 정의 하시고 시작하면될것 같네요

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인

전체 질문 목록

🐛 버그신고