계층형 카테고리별 공지사항 출력 문의 드립니다.

안녕하세요^^
일단 Kboard를 개발해주셔서 감사드립니다. 잘 사용하고 있습니다~

계층형 카테고리별 공지사항을 다르게 보이고 싶은데 잘되지 않아서 질문드려요~
검색을 통해서
https://www.cosmosfarm.com/threads/document/13928
위와 같은 글을 발견하고 체크해보니 이건 이미 기본적으로 적용이 되어있었지만,
계층형 카테고리가 아닌 일반 카테고리에서만 작동하는것 같습니다.

방법 알려주시면 감사드리겠습니다..^^

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기
  • 안녕하세요~^^

    올려주신 코드 중에서

    아래의 코드를 찾아서

    $this->resource_notice = $wpdb->get_results("SELECT * FROM {$from} WHERE " . implode(' AND ', $where) . " ORDER BY `date` DESC");

    아래의 코드로 교체해보시겠어요?

    $this->resource_notice = $wpdb->get_results("SELECT `{$wpdb->prefix}kboard_board_content`.* FROM {$from} WHERE " . implode(' AND ', $where) . " ORDER BY `date` DESC");

     

    공지사항 계층형 카테고리 검색에 대해서는

    추후 연구 개발하여 업데이트하도록 하겠습니다.

    고맙습니다.

  •  

    계층형 카테고리별 공지사항 노출되게 위에 알려주신대로 적용했는데

    계층형 카테고리 선택후 조회된 리스트에서 공지사항을 클릭하면 글 상세페이지로 이동하지 않습니다. 

    (카테고리로 조회하지 않았을때는 공지사항 클릭시 상세페이지로 이동 이상없음)

    어느부분에서 잘못된것일까요? 

     

    /**
    * 공지사항 리스트를 반환한다.
    * @return resource
    */
    public function getNoticeList(){
    	global $wpdb;
    		
    	if(is_array($this->board_id)){
    		foreach($this->board_id as $key=>$value){
    			$value = intval($value);
    			$board_ids[] = "'{$value}'";
    		}
    		$board_ids = implode(',', $board_ids);
    		$where[] = "`board_id` IN ($board_ids)";
    	}
    	else{
    		$this->board_id = intval($this->board_id);
    		$where[] = "`board_id`='$this->board_id'";
    	}
    		
    	if($this->category1){
    		$category1 = esc_sql($this->category1);
    		$where[] = "`category1`='{$category1}'";
    	}
    		
    	if($this->category2){
    		$category2 = esc_sql($this->category2);
    		$where[] = "`category2`='{$category2}'";
    	}
    		
        $from[] = "`{$wpdb->prefix}kboard_board_content`";
    		
        $search_option = $this->search_option;
        if($search_option){
    	    $multiple_option_query = $this->multipleOptionQuery($search_option);
    	    if($multiple_option_query){
    		    $where[] = $multiple_option_query;
    		    foreach($this->multiple_option_keys as $option_name){
    			    $option_key = array_search($option_name, $this->multiple_option_keys);
    			    $from[] = "INNER JOIN `{$wpdb->prefix}kboard_board_option` AS `option_{$option_key}` ON `{$wpdb->prefix}kboard_board_content`.`uid`=`option_{$option_key}`.`content_uid`";
    		    }
    	    }
        }
    
        $from = implode(' ', $from);
        $where[] = "`notice`!=''";
    
        // 휴지통에 없는 게시글만 불러온다.
        $where[] = "(`status`='' OR `status` IS NULL OR `status`='pending_approval')";
    
        $this->resource_notice = $wpdb->get_results("SELECT * FROM {$from} WHERE " . implode(' AND ', 
        $where) . " ORDER BY `date` DESC");
        $wpdb->flush();
    		
    	return $this->resource_notice;
    }
    	
    

     

  • 말씀하신 것처럼 하시려면 단순히 코드 몇 줄로는 해결되지 않을 듯합니다.

    저희도 연구해보고 좋은 방법이 있다면 안내해드리겠습니다.

    고맙습니다.

  • 친절한 답변 감사드립니다^^

    알려주신대로 작동시켜보면

    [계층형 카테고리2]의 공지가
    [계층형 카테고리1]에도 나오고, [전체]에도 나오는데

    [계층형 카테고리1]은 [우주]이고
    [계층형 카테고리2]가 [지구]라면

    [지구]의 공지는 [지구]에만 나오고
    [우주]만 선택했을때와 [전체]만 선택했을때 안나오게 할수는 없을까요?
    물론 [우주](지구를 선택하지않은)의 공지는 또 따로 보여야하구요~

    먼저 알려주신 코드는 따로 유형에 맞는 게시판에 잘 쓰도록 하겠습니다^^
    바쁘신데 한번만 더 도와주시면 감사드리겠습니다..^^
     

  • 안녕하세요~^^

    공지사항 쪽에 계층형 카테고리 검색을 적용하시려면

    FTP로 접속해서 /wp-content/plugins/kboard/class/KBContentList.class.php 파일에

    아래의 코드를 찾아서

    $where[] = "`notice`!=''";
    		
    // 휴지통에 없는 게시글만 불러온다.
    $where[] = "(`status`='' OR `status` IS NULL OR `status`='pending_approval')";
    
    $this->resource_notice = $wpdb->get_results("SELECT * FROM `{$wpdb->prefix}kboard_board_content` WHERE " . implode(' AND ', $where) . " ORDER BY `date` DESC");
    $wpdb->flush();

    아래의 코드로 교체해보시겠어요?

    $from[] = "`{$wpdb->prefix}kboard_board_content`";
    		
    $search_option = $this->search_option;
    if($search_option){
    	$multiple_option_query = $this->multipleOptionQuery($search_option);
    	if($multiple_option_query){
    		$where[] = $multiple_option_query;
    		foreach($this->multiple_option_keys as $option_name){
    			$option_key = array_search($option_name, $this->multiple_option_keys);
    			$from[] = "INNER JOIN `{$wpdb->prefix}kboard_board_option` AS `option_{$option_key}` ON `{$wpdb->prefix}kboard_board_content`.`uid`=`option_{$option_key}`.`content_uid`";
    		}
    	}
    }
    
    $from = implode(' ', $from);
    $where[] = "`notice`!=''";
    
    // 휴지통에 없는 게시글만 불러온다.
    $where[] = "(`status`='' OR `status` IS NULL OR `status`='pending_approval')";
    
    $this->resource_notice = $wpdb->get_results("SELECT * FROM {$from} WHERE " . implode(' AND ', $where) . " ORDER BY `date` DESC");
    $wpdb->flush();

    고맙습니다.

좋은 정보와 인맥을 동시에, 워드프레스 사용자 단톡방 참여하기