한 게시판에서 카테고리별로 목록을 보여주는 방법 재차 질문드립니다.

안녕하세요.

이전에 이와 비슷한 질문을 올린 적이 있었는데 너무 오래되었고, 그 때 답변을 주셨었는데 혼자 작업해보니 생각보다 잘 해결되지 않아 다시 질문을 올려서 여쭤보려고합니다.

현재 아래와 같은 구성을 준비중에 있습니다.

qP64fah.png

A팀, B팀, C팀은 kboard 게시판에서 카테고리로 설정하려고 합니다.
이렇게 한 게시판 안에서 카테고리별로 다르게 정렬하는 방법을 구성할 수 있을까요?

이전에 add_action()을 통해 DB쿼리문의 SELECT절을 편집하면 되고,
kboard_list_from과 kboard_list_where을 편집하면 된다고 하셨는데, 사실 이 내용을 제대로 이해하지 못했습니다.

가능하시다면 예제 코드를 하나 보여주실 수 있으실까요?

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

    우선 단순하게 불러오는 게시판 목록 자체에서

    위 레이아웃으로 정렬하시려는 것인지

    불러오는 것 자체를 정렬하려는 것인지

    혹은 각 카테고리 별로 최신글들을 불러오려고 하는 것인지

    정하셔야 할 듯 합니다.

     

    목록 내에서 카테고리를 나누고자 하신다면

    list.php 파일의 while 문 안에서 조건문으로 정리해볼 수 있을 듯 합니다.

    <?php
    <?php while($content = $list->hasNext()):?>
    
    ...
    
    if($content->category1 == ''){
    // 코드 입력
    }
    
    ...
    
    <?php endwhile?>
    ?>

     

    해당 카테고리 전체를 불러오시려면

    KBContentList 클래스의 인스턴스를 새로 생성해주셔야 합니다.

     

    아래의 코드를 참고하여 적용해보시겠어요?

    <?php
    $new1 = new KBContentList($board->id);
    $new1->category1('1번 카테고리');
    $new1->getList();
    ?>
    <table>
    	<tbody>
    	<?php while($content = $new1->hasNext()):?>
    		<tr class="kboard-list-notice<?php if($content->uid == kboard_uid()):?> kboard-list-selected<?php endif?>">
    			<td class="kboard-list-title">
    				<a href="<?php echo $url->set('uid', $content->uid)->set('mod', 'document')->toString()?>">
    					<div class="kboard-default-cut-strings">
    						<?php if($content->isNew()):?><span class="kboard-default-new-notify">New</span><?php endif?>
    						<?php if($content->secret):?><img src="<?php echo $skin_path?>/images/icon-lock.png" alt="<?php echo __('Secret', 'kboard')?>"><?php endif?>
    						<?php echo $content->title?>
    						<span class="kboard-comments-count"><?php echo $content->getCommentsCount()?></span>
    					</div>
    				</a>
    			</td>
    			<td class="kboard-list-user"><?php echo apply_filters('kboard_user_display', $content->member_display, $content->member_uid, $content->member_display, 'kboard', $boardBuilder)?></td>
    			<td class="kboard-list-date"><?php echo $content->getDate()?></td>
    			<td class="kboard-list-vote"><?php echo $content->vote?></td>
    			<td class="kboard-list-view"><?php echo $content->view?></td>
    		</tr>
    	<?php endwhile?>
    	</tbody>
    </table>
    
    <?php
    $new2 = new KBContentList($board->id);
    $new2->category1('B');
    $new2->getList();
    ?>
    <table>
    	<tbody>
    	<?php while($content = $new2->hasNext()):?>
    		<tr class="kboard-list-notice<?php if($content->uid == kboard_uid()):?> kboard-list-selected<?php endif?>">
    			<td class="kboard-list-title">
    				<a href="<?php echo $url->set('uid', $content->uid)->set('mod', 'document')->toString()?>">
    					<div class="kboard-default-cut-strings">
    						<?php if($content->isNew()):?><span class="kboard-default-new-notify">New</span><?php endif?>
    						<?php if($content->secret):?><img src="<?php echo $skin_path?>/images/icon-lock.png" alt="<?php echo __('Secret', 'kboard')?>"><?php endif?>
    						<?php echo $content->title?>
    						<span class="kboard-comments-count"><?php echo $content->getCommentsCount()?></span>
    					</div>
    				</a>
    			</td>
    			<td class="kboard-list-user"><?php echo apply_filters('kboard_user_display', $content->member_display, $content->member_uid, $content->member_display, 'kboard', $boardBuilder)?></td>
    			<td class="kboard-list-date"><?php echo $content->getDate()?></td>
    			<td class="kboard-list-vote"><?php echo $content->vote?></td>
    			<td class="kboard-list-view"><?php echo $content->view?></td>
    		</tr>
    	<?php endwhile?>
    	</tbody>
    </table>

     

    코드를 적용하기 어려우시다면

    최신글 보기를 활용해볼 수도 있습니다.

     

    최신글 보기에는 카테고리 별로 불러오는 파라미터가 있으므로

    해당 기능을 활용하는 방안도 고려해보시겠어요?

    고맙습니다.

  • 감사합니다. 해당 카테고리 전체를 불러와서 display 시키려던게 의도였고, 아래쪽에 있는 장문의 긴 내용을 응용해서 적용하니 잘 작동합니다.

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