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

분류별 공지 질문 채택완료

콩머거콩비타민 10개월 전 조회 2,288

분류가 설정된 게시판에서 공지사항이 있을경우

 

분류선택시 공지사항이 뜨도록 설정은 도움을 받아 잘 해결 했습니다

 

하지만 제가 원하는것처럼 되질않아서 다시 질문 남깁니다  분류선택시 해당 분류와 일치하는 공지만 보여지도록 할수 있을까요 ? 예를들어서  분류가 일반,VIP 2가지가 있다면

 

분류-일반 공지는 일반분류와 전체글 보기에서만 노출이 되고 다른분류 선택시 뜨지 않도록 하고싶습니다

 

지금 전체글 보기에서는 모든 공지가 출력되고

분류 선택시에도 분류와 관계없이 모든 공지가 출력되고 있습니다.

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

답변 3개

채택된 답변
+20 포인트
glitter0gim
10개월 전

bbs/board.php에서 공지를 조회하는 SQL 쿼리를 찾아 수정하면 어떨까요.

 

$sql = "SELECT * FROM g5_write_board         WHERE (wr_is_notice = 1 AND notice_category = '{$selected_category}')         OR wr_is_notice = 0         ORDER BY wr_num DESC";

 

*데이터베이스 구조 확인

ALTER TABLE g5_write_board ADD COLUMN notice_category VARCHAR(255) DEFAULT NULL;

 

*bbs/board.php 및 bbs/list.php 파일을 열어,

  $selected_category 또는 유사한 변수가 아래와 같이 설정되어 있는지 검색/확인

$selected_category = isset($_GET['category']) ? $_GET['category'] : '';

 

- SQL 쿼리에 $selected_category가 포함되어 있다면 이미 분류를 처리하고 있는 것입니다. 에로) WHERE category = '{$selected_category}'

 

※ 최종 참고 예시

</p>

<p>$selected_category = isset($_GET['category']) ? $_GET['category'] : '';</p>

<p>$sql = "SELECT * FROM g5_write_board

        WHERE ((wr_is_notice = 1 AND notice_category = :category) OR wr_is_notice = 0)

        ORDER BY wr_num DESC";</p>

<p>$stmt = $pdo->prepare($sql);

$stmt->execute(['category' => $selected_category]);</p>

<p>$result = $stmt->fetchAll();</p>

<p>

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

답변에 대한 댓글 3개

콩머거콩비타민
10개월 전
답변 감사드리며 해당 사항에 대해 이해는 충분히 했습니다만

이렇게 처리하면 기존 그누 코어 코드랑 코드가 꼬이지 않을까요 ?
g
glitter0gim
10개월 전
공지 필터링 로직이 SQL 쿼리에서 반영되지 않은 것으로 보입니다.
아래와 같은 AI 분석입니다.
*bbs/list.php의 기본 SQL 쿼리에 직접 변경을 가하면,
그누보드 업데이트 시 수정한 코드가 덮어씌워질 가능성이 있음.
*$sca 변수는 이미 코어에서 사용되고 있으므로,
새로운 변수 추가 없이 기존 변수를 활용하면 변수 충돌 가능성을 낮출 수 있음.
*wr_category와 같은 필드를 추가하면 기존 테이블과 구조가 달라져,
일부 확장 기능 또는 플러그인과 호환되지 않을 수 있음.

이를 감안하면, 그누보드 코어 코드와의 충돌 가능성을 최소화할 수 있지 않을까요.

bbs/list.php와 같은 코어 파일에 직접 SQL 쿼리를 변경하지 않고
대신 테마 파일(list.skin.php)을 수정하거나,
커스텀 스킨을 만들어 코어와 독립적으로 동작하도록 구현하시면~
- $sca 변수와 같은 코어에서 이미 사용 중인 변수를 재활용하여 새로운 변수 추가를 피함.
- 분류 선택 시 $_GET['sca'] 값을 그대로 활용하여 공지 필터링 로직을 적용.
- 새로운 필드(wr_category)를 추가하지 않고, 기존 여분 필드(wr_1, wr_2 등)를 사용.
- 여분 필드를 활용하여 공지사항의 분류 정보를 저장하고 SQL 조건에 반영.
- 공지사항과 일반 글을 별도의 SQL로 조회한 뒤 병합하여 처리

// 공지사항 조회
$notice_sql = "SELECT * FROM {$write_table}
WHERE wr_is_notice = 1 AND wr_1 = '{$sca}'";
$notices = sql_query($notice_sql);

// 일반 게시글 조회
$posts_sql = "SELECT * FROM {$write_table}
WHERE wr_is_notice = 0
ORDER BY wr_num DESC";
$posts = sql_query($posts_sql);

// 공지사항과 게시글 병합
$result = array_merge($notices, $posts);

- 모든 커스터마이징은 테마 디렉터리에서 처리하여,
그누보드 코어 업데이트 시 덮어씌워지지 않도록 유지.
고택스
10개월 전
설명 되게 잘해주시긴 했는데 적용 안되는거 같네요

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

10개월 전

이전 질문은 이해를 잘 못 했었는데 원하시는 것이 

https://rcub.mycafe24.com/free https://rcub.mycafe24.com/free?sca=%EC%99%BC%EC%AA%BD 이런 기능 인가요?

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

답변에 대한 댓글 1개

콩머거콩비타민
10개월 전
네! 이거 맞습니다 !! 이해를 잘 못하신게 아니라
제가 추가적으로 질문이 늘어난겁니다 ,, ㅎㅎ

이걸 구현하고 싶은데 어떻게 해야할까요 ㅠ

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

10개월 전

스킨 폴더의 list.skin.php 에서 출력 for 문 아래 다음코드를 추가해보면 어떨까 싶습니다.

for ($i=0; $i

  if ($list[$i]['is_notice'] && $sca && $sca != $list[$i]['ca_name'])

    continue;

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

답변에 대한 댓글 1개

콩머거콩비타민
10개월 전
안되는거같네요 ㅠㅠ

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

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

로그인