분류별 공지 질문 채택완료
분류가 설정된 게시판에서 공지사항이 있을경우
분류선택시 공지사항이 뜨도록 설정은 도움을 받아 잘 해결 했습니다
하지만 제가 원하는것처럼 되질않아서 다시 질문 남깁니다 분류선택시 해당 분류와 일치하는 공지만 보여지도록 할수 있을까요 ? 예를들어서 분류가 일반,VIP 2가지가 있다면
분류-일반 공지는 일반분류와 전체글 보기에서만 노출이 되고 다른분류 선택시 뜨지 않도록 하고싶습니다
지금 전체글 보기에서는 모든 공지가 출력되고
분류 선택시에도 분류와 관계없이 모든 공지가 출력되고 있습니다.
답변 3개
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개
아래와 같은 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);
- 모든 커스터마이징은 테마 디렉터리에서 처리하여,
그누보드 코어 업데이트 시 덮어씌워지지 않도록 유지.
댓글을 작성하려면 로그인이 필요합니다.
이전 질문은 이해를 잘 못 했었는데 원하시는 것이
https://rcub.mycafe24.com/free https://rcub.mycafe24.com/free?sca=%EC%99%BC%EC%AA%BD 이런 기능 인가요?
답변에 대한 댓글 1개
제가 추가적으로 질문이 늘어난겁니다 ,, ㅎㅎ
이걸 구현하고 싶은데 어떻게 해야할까요 ㅠ
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인
이렇게 처리하면 기존 그누 코어 코드랑 코드가 꼬이지 않을까요 ?