분류별 공지 질문

매출이 오르면 내리는 수수료! 지금 수수료센터에서 전자결제(PG)수수료 비교견적 신청해 보세요!
분류별 공지 질문

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
이런 기능 인가요?

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

회원로그인

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