게시판 확장변수 다중검색 애드온
자료 유형 | 애드온 |
---|---|
간단한 소개 | 게시판에서 확장변수를 다중 검색할 수 있도록 해주는 애드온입니다. |
설치 경로 | ./addons/ap_extra_search |
코어 지원 범위 | Rhymix 2.0 |
PHP 지원 범위 | 기타 |
자료 구분 | 공개 자료 |
라이선스 | GPL v2 |
저장소 URL | https://github.com/cydemo/xe-addon-ap_extra_search |
파일명 | 버전 | 날짜 | 용량 | 다운 |
---|---|---|---|---|
ap_extra_search.0.5.0.zip | 0.5.0 | 2022.04.17 | 154.0KB | 226 |
ap_extra_search.0.4.2.zip | 0.4.2 | 2021.04.03 | 157.2KB | 171 |
ap_extra_search.0.4.1.zip | 0.4.1 | 2019.04.06 | 152.5KB | 262 |
ap_extra_search.0.4.0.zip | 0.4.0 | 2019.04.04 | 152.2KB | 75 |
ap_extra_search.0.3.2.zip | 0.3.2 | 2019.01.09 | 151.4KB | 109 |
ap_extra_search.0.3.1.zip | 0.3.1 | 2018.07.18 | 150.5KB | 208 |
ap_extra_search.0.3.0.zip | 0.3.0 | 2018.07.09 | 150.9KB | 95 |
ap_extra_search.0.2.0.zip | 0.2.0 | 2018.07.07 | 12.1KB | 63 |
ap_extra_search.0.1.0.zip | 0.1.0 | 2018.06.27 | 8.8KB | 83 |
ap_extra_search.0.0.4.zip | 0.0.4 | 2018.06.27 | 7.4KB | 52 |
ap_extra_search.0.0.3.zip | 0.0.3 | 2018.06.27 | 7.4KB | 47 |
ap_extra_search.0.0.2.zip | 0.0.2 | 2018.06.26 | 7.4KB | 79 |
- 본 애드온의 제목은 '게시판 확장변수 다중검색 애드온'입니다.
- 게시판을 아카이브 등의 목적으로 사용할 때 좋습니다.
- 초보 실력으로 만든 것이어서 많이 부족합니다. 변수의 개수가 많거나 게시량이 많은 경우 서버에 무리를 줄 수 있습니다. (다중검색 기능이 정말로 필요한 게시판에서만 사용하시기 바랍니다.)
- 0.5.0 버전부터는 라이믹스 2.0 및 php 7.4 이상에서만 작동합니다.
- 라이믹스에서만 테스트해봤습니다. => 0.1.0 버전에서 XE 작동 확인
기본 기능
- 검색
- 애드온 설정을 통해 교차검색(AND)과 누적검색(OR)을 모두 사용할 수 있습니다.
- 검색화면을 게시판 목록화면 원하는 곳 어디에나 삽입할 수 있습니다.
- 다중선택 체크박스로 이뤄진 확장변수도 무리 없이 잘 검색됩니다.
- 게시판의 기본검색(제목, 내용, 태그 등)과 연동해서 사용할 수 있습니다.(0.2.0부터)
- 회원들의 서명(프로필)도 다중검색 기능에 통합했습니다.(0.2.0부터)
- 연월일 형식의 변수와 수치로 이뤄진 변수에 범위검색(RANGE)을 적용할 수 있습니다.(0.3.0부터)
- 스킨
- 코어에서 사용하는 확장변수 입력화면과 최대한 유사하게 디자인되어 있습니다.
- 스케치북 스킨에 어울리는 검색창 스킨을 제공합니다. 아울러 XEDITION용 스킨도 사용할 수 있습니다.
- 사용자가 자신만의 애드온 스킨을 편하게 디자인할 수 있습니다.
기본 제공되는 스킨에서는 셀렉트 메뉴 형식의 확장변수가 라디오 형식으로 출력되도록 js로 처리했습니다. 셀렉트 메뉴 형식의 확장변수를 라디오 형식으로도 출력할 수 있는 옵션을 제공합니다.(0.2.0부터)
0.5.0 업데이트 (2022-04-17)
- 라이믹스의 애드온에서의 트리거 활용과 커스텀 쿼리를 이용하여 다중검색의 속도를 개선
- queries/getMaxAndMinValueWithinExtraVars.xml 만 남기고 나머지 xml 파일을 모두 삭제
- 코드 정리
- 범위 검색의 경우 최소값과 최대값의 자릿수가 다른 경우에 대비해서 앞자리에 자동으로 숫자 '0'을 붙여주고 싶다면
- ap_extra_search.addon.php 파일의 341행 쯤에 아래 코드의 하이라이트된 부분을 넣어주면 됨$_v = Context::get('extra_vars'.$key.'-2');
if ( $extra_keys[$key]->type !== 'date' && (strlen($extra_keys[$key]->min) !== strlen($extra_keys[$key]->max)) )
{
$str_len = strlen($extra_keys[$key]->max);
$v = sprintf('%0' . $str_len . 'd', $v);
$_v = sprintf('%0' . $str_len . 'd', $_v);
}
$conditions .= ' (var_idx = ? AND value >= ? AND value <= ?)'; - 수정된 파일
- conf/info.xml (버전 정보 수정)
- ap_extra_search.addon.php (코드 개선 및 정리)
- queries 폴더 (쿼리 xml 파일 삭제) - 카테고리 중복 선택 가능
- 스킨으로 구현된 것은 아니지만 카테고리 중복 선택도 가능합니다.
- 주소 구현 사례 : 클릭해서 보시면 팁, 에디터, 템플릿 등의 카테고리에 소속된 문서들이 목록화된 것을 보실 수 있을 겁니다.
- 관련 내용이 여기 https://xetown.com/topics/1675320 에 있으니 주소 체계 부분(category_srls[]=17330&category_srls[]=12438&category_srls[]=13007)을 참고하시어 스킨 개발하실 때 참고하셔도 좋을 것 같습니다.
0.4.2 업데이트 (2021-04-03)
- queries/getDocumentListWithExtraVarsEqual.xml에 해당했던 확장변수 형식 중 checjbox를 제외해서 검색결과 오류를 수정 (dreamlizer님)
- 0.4.0의 마늘션님 팁을 문서번호가 담길 수 있도록 수정
- 수정된 파일
- ap_extra_search.addon.php
0.4.1 업데이트 (2019-04-07)
- 데이터 범위 검색시, 모바일에서도 터치 이벤트를 이용해 커서 이동이 가능하게 함 (아스타님 요청)
- 수정된 파일
- conf/info.xml (버전 정보 수정)
- js/data_range_search.js (터치 이벤트 추가)
0.4.0 업데이트 (2019-04-05)
- (검색 결과에 해당하는 문서 목록 취득시) 모든 문서의 정보를 가져온 뒤 페이지에 따라 목록을 나눠주던 방식을 폐지하고, 순서를 바꿔서 페이지에 따라 목록을 나눠준 뒤 list_count만큼만 문서 정보를 가져오게 함으로써 목록의 로딩 속도를 개선함 (마늘션님)
- 사용자정의 확장변수의 형식이 '라디오 버튼', '셀렉트 메뉴', '체크박스' 등일 경우 변수값의 검색 조건을 like에서 equal로 수정함으로써, 검색 결과의 오류를 방지하고 검색 속도도 개선함
- 수정된 파일
- ap_extra_search.addon.php
- conf/info.xml (버전 정보 수정)
- queries/getDocumentListWithExtraVarsEqual.xml (새로 추가)
0.3.2 업데이트 (2019-01-09)
- 데이터 범위 검색에서 슬라이드의 커서 이동 단위를 사용자가 직접 입력해서 사용할 수 있도록 함(기본값은 10이며, 예컨대 1을 입력하면 슬라이드 커서가 1 단위로 움직임)
- 스킨 파일에서 서버에 따른 스크립트 변수 인식 오류 수정
- 수정된 파일
- ap_extra_search.addon.php
- conf/info.xml
- js/data_range_search.js
- lang/lang.xml
- skins/sketchbook5/js/default.js
- skins/xedition/js/default.js
0.3.1 업데이트 (2018-07-11)
- 검색 쿼리에서 list_count를 없앰으로써 문서 누락을 방지함
(이 때문에 기존보다 로딩 시간 지연이 생길 수 있습니다. 문서량이 많은 게시판에서는 기존의 유료 모듈이나 위젯을 선택하시는 게 좋습니다^^) - 기본 스킨(sketchbook5, xedition)에서 필수항목 표시를 제거함
0.3.0 업데이트 (2018-07-10)
- 날짜 검색시 범위검색 적용 가능
- 수치 검색시에도 범위검색 적용 가능
- 애드온 설정 일부 추가
: 검색창을 삽입할 위치의 클래스(class) 이름을 복수로 입력할 수 있으며, 앞선 순번에 따라 삽입 위치를 탐색하게 됨
: 범위 검색을 적용할 확장변수의 사용자정의 이름(eid)를 임의로 입력할 수 있음 - 범위 검색 적용에 따라 스킨단 소스 구조에도 중요 수정이 있음
(기존에 스킨을 만드셨더나 수정하셨던 분들께 양해 부탁드립니다ㅜ 앞으로는 버그만 잡고 구조변경은 없을 예정이므로 안정적으로 스킨을 개발하셔도 됩니다ㅠㅠ)
0.2.0 업데이트 (2018-07-08)
- 기본검색(제목, 내용, 댓글, 태그 등)과 연동 가능
- 회원 서명(프로필)검색 기능도 추가 (skyo님) ... 단, 회원수가 많은 경우 서버 부하를 유발할 수 있음
- 셀렉트메뉴 형식 확장변수의 라디오버튼 형식 강제출력을 선택적 출력으로 변경 (루벤님)
- 애드온 옵션 구조화
- 애드온 버전업에 따라 스킨의 html, css, js 등 소스 파일도 수정
- 다국어 언어팩을 스킨이 아니라 애드온 단위에서 바로 처리 ... (기존 사용자들은 스킨 폴더의 lang 폴더를 지우시는 게 좋겠습니다.)
- 스킨에서 필수항목 별표 표시 삭제(검색 화면에서 필수항목 표기는 필요 없는 듯)
0.1.0 업데이트 (2018-06-28, 안정화 버전)
- 기본 설정이 교차검색(AND)이더라도 다중선택 체크박스는 자기 배열 내에서 누적검색(OR)이 가능하도록 함 (mospia님)
- (0.0.3 업데이트 이후 AND 검색일 때) 첫 번째 변수의 검색값을 주지 않고 두 번째 변수부터 검색을 시도했을 때 검색결과를 가져올 수 없는 치명적 버그 수정
- 다중검색 구조를 쉽게 알아볼 수 있도록 애드온 파일에 최대한 친절한 한글 주석 입력
- XE에서도 잘 작동하는 것으로 확인
0.0.4 업데이트 (2018-06-27)
- 일부 애드온 위치를 못 잡는 문제 수정 (mospia님)
0.0.3 업데이트 (2018-06-27)
- (AND 검색일 때) 교차검색 결과가 더 이상 없는 상황에서 추가로 검색 쿼리가 있을 경우, 검색결과가 새로 얻어지는 버그 수정
라이선스
- 기본적으로 GPL v2 라이선스를 준용합니다.
동작 설명
- 검색이 허용된 확장변수가 하나 이상 있을 경우 검색창 출력
- 템플릿 핸들러 클래스를 통해 스킨 파일 불러들임
- 스킨 파일의 html 코드를 원하는 위치에 삽입
- 검색 결과를 $document_list 및 $page_navigation 변수에 반영하여 게시판 리스트로 뿌려줌
테스트 환경
- 크롬 66.0.3359.181 / IE 11.48.17134.0 / 엣지 42.17134.1.0
- 라이믹스 2.0.20 / PHP 버전: 7.4
- 스포어 웹호스팅
데모
- 미리보기 : https://dev.aporia.blog/board_fKje43

윤삼
Lv. 19
아무래도 중급 초반 수준의 코딩 오타쿠인 것 같습니다.
댓글 129
확장변수 바로 수정 애드온 은 소스 찾아서 해보니 아주 잘 됩니다.
확장변수 바로 수정 애드온 이 다른 스킨은 잘 됐는데 스케치북 스킨에서는 카테고리만 되고 확장변수가 안되서
확장변수 검색 애드온을 끄니까 잘 되더라구요.
스케치북 스킨 최신버전인데 버전에 문제일까요? ㅠㅠ
다른 분들도 그런지, 원래 그런가요.
해당 전화번호값만 넣으면 [010]-[1234]-[1234]로 검색하면 뒷자리가 1234인 다른 게시물
예를 들면 010-5566-1234도 검색이 되는군요.
일단 전화번호 형식은 한줄로 수정해서 사용하면 될듯 한데..
나중에 여유 되시면 전화번호 형식의 확장변수를 검색값으로 올리고, 다른 입력 형식의 확장변수를 추가로
넣을 경우에 해당 검색이 동작하지 않는 문제에 대해서도 살펴봐주시면 감사하겠습니다. (__)/;;
일전에 폼 위젯을 만들 때도 그랬는데 전화번호 형식이 골치가 많이 아프더군요.
https://github.com/cydemo/xe-addon-ap_extra_search/blob/9df579d37047aafb09b4ed8d7aa84f6c79c1fb8c/ap_extra_search.addon.php#L329
여기 어딘가에서부터 전화번호 배열에 맞게 검색 키워드를 조작해주면 될 것 같은데요.
여전히 머리가 잘 안 굴러가긴 합니다.
굉장히 오랜 시간 집중해서 봐야할 듯한데, 당장엔 그럴 여유를 찾기가 힘드네요ㅜㅜ
덧.
개인적인 생각으로는, 말씀하신대로 전화번호 형식도 1) 한줄 입력칸으로 입력하고(010-5566-1234) 2) 일반 문자열로 저장한 뒤 3) 일반적인 like 방식으로 검색하는 게 가장 타당해보입니다.
예전에 관련 이슈를 넣어볼까 생각도 해봤었는데, 여러 사이트들에서 이미 배열로 전화번호 데이터가 저장 및 활용되고 있어서 그 점은 감안한다면 고치기가 쉽지는 않겠더라구요.
https://github.com/cydemo/xe-addon-ap_extra_search/blob/70aa78a158d1c96ca92067fb2d288e75cf4de9e3/skins/sketchbook5/extra.html#L23-L30
여기서 잘 출력해주면 될 것도 같은데, 다른 게시판 스킨의 카테고리 목록 출력 부분을 참조하셔서 해보시면 되지 않을까요?
해당 게시판에서 설정하시면 될 겁니다.
게시판 관리 > 확장변수 탭에서 해당 확장변수의 검색을 허용하지 않는 것으로 설정해보세요.
윤삼님 감사합니다 ^^
새로 작업중인 사이트에서 이상하게
다중검색 애드온 적용하면 바로 관리자 및 홈페이지 자체 접속이 않지 않네요
이렇게 에러 메시지 가 뜨고요 반응이 없습니다.
ParseError #0 "syntax error, unexpected '...' (T_ELLIPSIS), expecting ']'" in addons/ap_extra_search/ap_extra_search.addon.php on line 186
이렇게 뜨고 전체가 접속불량 먹통이라 DB 복원으로 살리면서 테스트 중인데 어디가 문제일까요?
http://_/Artwork_Listings
Rhymix 2.1.1
혹시 0.5.3에서도 같은 문제가 나타나나요?
방금 0.5.3 업데이트 했는데 에러메시지만 바뀌고 증상은 똑같네요
ParseError #0 "syntax error, unexpected '...' (T_ELLIPSIS), expecting ']'" in addons/ap_extra_search/ap_extra_search.addon.php on line 202
http://_/Artwork_Listings
아, php 버전은 어떻게 되시나요?
7.4 미만에서는 에러 가능성이 있어요. 그리고 8.0 이상에서는 테스트를 못해봤구요.
7.3이군요 ~
php 7.4 업그레이드 후 잘 적용 되었습니다.
검색 옵션 체크 하고 정상적으로 나옵니다.
윤삼님 정말 감사합니다.
그건 확장변수 (다중검색이 아니라) 바로 수정 애드온 쪽이에요.
(덧. 해결하셨나보네요?)
검색 옵션 활성화 시키니 정상작동합니다.
정말 감사합니다.
자료 감사합니다.
0.4.2버젼을 사용하다 깃헙의 최신 0.5.3버젼 파일로 업로드 하면 아래와 같은 에러메시지가 출력되는 증상이 있는데요.
ParseError #0 "syntax error, unexpected '...' (T_ELLIPSIS), expecting ']'" in addons/ap_extra_search/ap_extra_search.addon.php on line 202
혹시 php버젼이 낮아서 발생하는 문제일까요? ( php7.2.3) 입니다.
옛날 버전에는 없는 문법을 쓴 바람에...
if ($this->module_info->consultation == 'Y' && !$this->grant->manager && !$this->grant->consultation_read) {
$this->consultation = TRUE;
if (!Context::get('is_logged')) {
$this->grant->list = FALSE;
$this->grant->write_document = FALSE;
$this->grant->write_comment = FALSE;
$this->grant->view = FALSE;
} else {
// 사용자가 로그인한 경우 자신의 글만 조회할 수 있도록 조건 추가
$conditions .= ' AND documents.member_srl = ?';
$cond_args[] = Context::get('logged_info')->member_srl;
}
} else {
$this->consultation = FALSE;
}
addon에 이런식으로 코드 추가해서 사용하니 작동을 하긴 하는데. 시간되실때 한번 살펴봐 주세요.