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

게시판 분류 사용시 해당분류만 나오는게 아니라 분류별 순차적으로 나오게 가능한가요? 채택완료

다크케논 4년 전 조회 2,510

게시판 분류 사용시 해당분류만 나오는게 아니라 분류별 순차적으로 나오게 가능한가요?

 

예를 들어 분류명을 1  2  3  4  5 로 하고 각각의 분류별로 1개의 게시물이 있다면

분류선택시 각각의 분류별 1개의 게시물이 출력되는게 아니라 아래처럼 순차적으로 나오게 가능한가요?

 

[분류1]을 선택했을땐 [분류1]의 1개의 게시물 출력

[분류2]를 선택했을땐 [분류1]과, [분류2]의 2개의 게시물이 출력

[분류3]을 선택했을땐 [분류1]과, [분류2], [분류 3] 이렇게 3개의 게시물이 출력되게 가능한가요?

 

 

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

답변 2개

채택된 답변
+20 포인트
Big1
4년 전

bbs/list.php 나 common.lib.php get_sql_search() 함수를 고쳐야 하는데 

전체 게시판에 적용되니 비추고요 

 

bbs/list.php 파일을 

사용할 게시판 스킨으로 복사하고 

list.skin.php 파일 상단에 include 해줍니다 

</p>

<p>include_once($board_skin_path."/list.php");</p>

<p>

 

복사한 스킨명/list.php 파일을 수정합니다

$sql_search = get_sql_search($sca, $sfl, $stx, $sop); 구문 아래... 

제대로 하려면 저 라인을 주석처리하고 

함수를 복사해서 커스텀하거나 해야겠지만 

매우 귀찮으므로 

$sql_search 에서 원하는 쿼리문으로 replace 합니다

 

</p>

<p>// (생략).......</p>

<p> </p>

<p>    $sql_search = get_sql_search($sca, $sfl, $stx, $sop);

    if ($sca) {

        $tmp = explode('|', $board['bo_category_list']);

        $foo = array_search($sca, $tmp);

        $bar = array_slice($tmp, 0, $foo + 1);

        $sir = " ca_name IN ('".implode("','", $bar)."') ";

        $sql_search = preg_replace("% ca_name = '[^']+' %", $sir, $sql_search);

        unset($tmp, $foo, $bar, $sir);

        echo $sql_search;

    }

// (생략).......</p>

<p> </p>

<p>

 

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

답변에 대한 댓글 1개

다크케논
4년 전
와우~ 대단하십니다~ ^^ 이게 되네요~ 오 신기해라~~^^
멋지십니다~^^

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

멋지십니다~ 능력자~^^

적용시켰더니 잘되긴 하는데 

 

지정되어있던 리스트정렬 순으로 안나오고 기본정렬로 되어버리는데 정렬을 수정하려면 어떻해야 하는지...^^;;;

ca_name desc 분류명 내림차순 나와야하는데 ^^;;

 

 

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

답변에 대한 댓글 2개

B
Big1
4년 전
정렬이랑은 별개의 문제인데요

ca_name desc 면
분류가 a|b|c일때 c b a
분류가 a|c|b일때 c b a
이렇게 되겠죠?
분류가 a|c|b일때 a c b
이렇게 나오는 걸 원하시나요?
그럼 관리자에서 설정으로는 쪼금 애로사항이 있고
list.php $sql_order 를 직접 수정해야하는데요

제가 작성한 코드중에
$tmp = explode('|', $board['bo_category_list']);
배열을 활용해서
(제가 아래 unset 시켰는데 유의미한 변수명으로 바꾸시고 unset 하지 않고)

order by filed(ca_name, '".implode("','", $tmp)."')
--> 결과값 order by field(ca_name, 'a', 'c', 'b')
이렇게 해주면 a c b
카테고리 지정순으로 정렬됩니다
물론 카테고리를 사용하는지 카테고리가 지정됐는지 체크해야겠고요
같은 카테고리의 우선 순위도 지정을 해야겠죠?
검색값이 있을때와 없을때가 정렬이 달라야 하나요?
이건 제가 설명하는 것보다 쿼리문을 이해하는게 정신건강에 좋을 것 같습니다
제가 알려드릴 수 있는 건 order by field() 까지~!

질문을 제대로 이해했는지 모르겠네요
다크케논
4년 전
정말 감사합니다^^ 해결 했습니다.

제가 입력해두었던 분류를

3|2|1| 에서 1|2|3 으로 바꾸기만 하면 되는 거였는데 ^^;;;;;

간단한걸 제가 그만....번거롭게해드렸네요



정말 많은 도움 되었습니다.



프로그램이 정말 공부하기가 어렵더라구요~

옆에서 누가 갈켜줄수도 없는거고 혼자 찾아서 하다보니

맞는길로 가고 있는건지...가다가 막히는 것도 많고 ㅋㅋㅋ



전문가분들을 보면 정말 존경스럽습니다~ ^^

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

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

로그인