분류별 공지 질문

분류별 공지 질문

QA

분류별 공지 질문

본문

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

 

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

 

하지만 제가 원하는것처럼 되질않아서 다시 질문 남깁니다 

분류선택시 해당 분류와 일치하는 공지만 보여지도록 할수 있을까요 ?

예를들어서 

분류가 일반,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}'

 

※ 최종 참고 예시

$selected_category = isset($_GET['category']) ? $_GET['category'] : '';
$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";
$stmt = $pdo->prepare($sql);
$stmt->execute(['category' => $selected_category]);
$result = $stmt->fetchAll();

공지 필터링 로직이 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);

- 모든 커스터마이징은 테마 디렉터리에서 처리하여,
  그누보드 코어 업데이트 시 덮어씌워지지 않도록 유지.

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

for ($i=0; $i<count($list); $i++) {

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

    continue;

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

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

답변을 작성하시기 전에 로그인 해주세요.
전체 127,626 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT