확장변수 다중검색 애드온을 활용하여 복수의 카테고리를 지정하고 문서 목록을 가져오기
url에서 복수의 카테고리를 지정하고 그에 해당하는 문서 목록을 가져오는 방법이 있다고 쓴 적이 있었는데요.
https://xetown.com/topics/1675320
이번에 게시판 확장변수 다중검색 애드온을 업데이트하면서 해당 기능도 함께 넣어놨습니다.
검색 기능의 확장이란 측면에서 함께 사용하면 좋겠더라구요 :)
* 준비해야 할 것
- 먼저 앞에서 링크한 애드온을 적용합니다.
- 게시판 관리의 '하단 내용'에 관련 스크립트 코드를 삽입합니다.
* 적용
- 애드온 설정은 따로 설명하진 않겠습니다ㅎ
- 그리고 스케치북 스킨을 기준으로 아래의 코드를 게시판 관리의 '하단 내용' 부분에 삽입합니다.
<script>
if ( $('.cnb_n_list').length > 0 ) {
if ( !current_url.getQuery('category_srl') ) {
$('.cnb_n_list li').eq(0).addClass('on');
} else {
$('.cnb_n_list li').eq(0).removeClass('on');
$('.cnb_n_list li a').each(function(i) {
if ( i === 0 ) {
return true;
}
var category_srl = $(this).attr('href').match(/category[=|\/](\d+)/)[1];
if ( current_url.getQuery('category_srl').indexOf(category_srl) !== -1 ) {
$(this).parent('li').addClass('on');
} else {
$(this).parent('li').removeClass('on');
}
});
}
$('.cnb_n_list li a').on('click', function() {
if ( $(this).closest('li').index() === 0 ) {
location.href = current_url.setQuery('category_srl', '');
return false;
} else {
var category_srl = $(this).attr('href').match(/category[=|\/](\d+)/)[1];
if ( !current_url.getQuery('category_srl') ) {
location.href = current_url.setQuery('category_srl', category_srl);
} else {
if ( current_url.indexOf(category_srl) !== -1 ) {
var category_srls = current_url.getQuery('category_srl').split(',');
for ( var i = 0; i < category_srls.length; i++ ) {
if ( category_srls[i] === category_srl ) {
category_srls.splice(i, 1);
i--;
}
};
location.href = current_url.setQuery('category_srl', category_srls.join(','));
} else {
location.href = current_url.setQuery('category_srl', current_url.getQuery('category_srl') + ',' + category_srl);
}
}
return false;
}
});
}
</script>
if ( $('.cnb_n_list').length > 0 ) {
if ( !current_url.getQuery('category_srl') ) {
$('.cnb_n_list li').eq(0).addClass('on');
} else {
$('.cnb_n_list li').eq(0).removeClass('on');
$('.cnb_n_list li a').each(function(i) {
if ( i === 0 ) {
return true;
}
var category_srl = $(this).attr('href').match(/category[=|\/](\d+)/)[1];
if ( current_url.getQuery('category_srl').indexOf(category_srl) !== -1 ) {
$(this).parent('li').addClass('on');
} else {
$(this).parent('li').removeClass('on');
}
});
}
$('.cnb_n_list li a').on('click', function() {
if ( $(this).closest('li').index() === 0 ) {
location.href = current_url.setQuery('category_srl', '');
return false;
} else {
var category_srl = $(this).attr('href').match(/category[=|\/](\d+)/)[1];
if ( !current_url.getQuery('category_srl') ) {
location.href = current_url.setQuery('category_srl', category_srl);
} else {
if ( current_url.indexOf(category_srl) !== -1 ) {
var category_srls = current_url.getQuery('category_srl').split(',');
for ( var i = 0; i < category_srls.length; i++ ) {
if ( category_srls[i] === category_srl ) {
category_srls.splice(i, 1);
i--;
}
};
location.href = current_url.setQuery('category_srl', category_srls.join(','));
} else {
location.href = current_url.setQuery('category_srl', current_url.getQuery('category_srl') + ',' + category_srl);
}
}
return false;
}
});
}
</script>
* 결과
- category가 아니라 category_srl을 파라미터로 해서 '다수의' 분류 번호를 불러오는 게 가능해집니다.
- 분류 링크를 클릭하면 해당 분류의 선택/취소가 가능합니다.
* 주의
- 위의 소스는 스케치북을 기준으로 코딩을 한 것이기 때문에, 사용 중이신 스킨에 따라 요소 포착을 잘 해주어야 합니다.

윤삼
Lv. 19
아무래도 중급 초반 수준의 코딩 오타쿠인 것 같습니다.
댓글 7
카테고리선택부분이 검색영역에 체크박스형태로 선택할 수 있게 구현도도 좋을것같다는 생각이 드네요.
오늘도 xe타운 가족분들 모두 행복하세요~
그렇게 이해하고 고민해보도록 할게요 :)
https://dev.aporia.blog/board_fKje43