자료실

게시판 확장변수 다중검색 애드온

2018.06.26 10:39
31,235
6
자료 유형 애드온
간단한 소개 게시판에서 확장변수를 다중 검색할 수 있도록 해주는 애드온입니다.
설치 경로 ./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 단위로 움직임)

    3.png

  • 스킨 파일에서 서버에 따른 스크립트 변수 인식 오류 수정
  • 수정된 파일
    - 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)

 

  • 날짜 검색시 범위검색 적용 가능
    1.png
  • 수치 검색시에도 범위검색 적용 가능

    3.png

  • 애드온 설정 일부 추가
    : 검색창을 삽입할 위치의 클래스(class) 이름을 복수로 입력할 수 있으며, 앞선 순번에 따라 삽입 위치를 탐색하게 됨
    : 범위 검색을 적용할 확장변수의 사용자정의 이름(eid)를 임의로 입력할 수 있음

    6.png

  • 범위 검색 적용에 따라 스킨단 소스 구조에도 중요 수정이 있음
    (기존에 스킨을 만드셨더나 수정하셨던 분들께 양해 부탁드립니다ㅜ 앞으로는 버그만 잡고 구조변경은 없을 예정이므로 안정적으로 스킨을 개발하셔도 됩니다ㅠㅠ)

 

 

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

  • 2022.08.11 10:11 #1703185
    네 알려주신데로 똑같이 해봐도 안되네요.
    확장변수 바로 수정 애드온 은 소스 찾아서 해보니 아주 잘 됩니다.
    확장변수 바로 수정 애드온 이 다른 스킨은 잘 됐는데 스케치북 스킨에서는 카테고리만 되고 확장변수가 안되서
    확장변수 검색 애드온을 끄니까 잘 되더라구요.
    스케치북 스킨 최신버전인데 버전에 문제일까요? ㅠㅠ
  • 2022.08.11 10:28 #1703192
    거기까지는 재연이 어려워서 저도 잘 모르겠네요ㅜㅜ
  • 2022.08.11 12:33 #1703222
    감사합니다.
  • 2022.08.15 02:29 #1703923
    정말 유용한 위젯 입니다. 잘 사용하겠습니다!
  • 2022.08.17 06:11 #1704313
    혹시 전화번호 유형의 확장변수를 넣으면 다른 확장변수에 값으로 검색하면 검색이 안되던데,
    다른 분들도 그런지, 원래 그런가요.
    해당 전화번호값만 넣으면 [010]-[1234]-[1234]로 검색하면 뒷자리가 1234인 다른 게시물
    예를 들면 010-5566-1234도 검색이 되는군요.
    일단 전화번호 형식은 한줄로 수정해서 사용하면 될듯 한데..
    나중에 여유 되시면 전화번호 형식의 확장변수를 검색값으로 올리고, 다른 입력 형식의 확장변수를 추가로
    넣을 경우에 해당 검색이 동작하지 않는 문제에 대해서도 살펴봐주시면 감사하겠습니다. (__)/;;
  • 2022.08.17 15:25 #1704361

    일전에 폼 위젯을 만들 때도 그랬는데 전화번호 형식이 골치가 많이 아프더군요.
    https://github.com/cydemo/xe-addon-ap_extra_search/blob/9df579d37047aafb09b4ed8d7aa84f6c79c1fb8c/ap_extra_search.addon.php#L329

    여기 어딘가에서부터 전화번호 배열에 맞게 검색 키워드를 조작해주면 될 것 같은데요.
    여전히 머리가 잘 안 굴러가긴 합니다.
    굉장히 오랜 시간 집중해서 봐야할 듯한데, 당장엔 그럴 여유를 찾기가 힘드네요ㅜㅜ

    덧.
    개인적인 생각으로는, 말씀하신대로 전화번호 형식도 1) 한줄 입력칸으로 입력하고(010-5566-1234) 2) 일반 문자열로 저장한 뒤 3) 일반적인 like 방식으로 검색하는 게 가장 타당해보입니다.
    예전에 관련 이슈를 넣어볼까 생각도 해봤었는데, 여러 사이트들에서 이미 배열로 전화번호 데이터가 저장 및 활용되고 있어서 그 점은 감안한다면 고치기가 쉽지는 않겠더라구요.

  • 2023.04.27 11:14 #1759449
    유용한 자료 업데이트 너무 감사드립니다 ~ 분류 카테고리의 경우 1차 분류까지만 되는데 2차 분류 (주소 시/구 떄문) 할수 있는 팁이 있을지요 ~ 가르쳐 주시면 감사하겠습니다
  • 2023.04.27 12:32 #1759456

    https://github.com/cydemo/xe-addon-ap_extra_search/blob/70aa78a158d1c96ca92067fb2d288e75cf4de9e3/skins/sketchbook5/extra.html#L23-L30
    여기서 잘 출력해주면 될 것도 같은데, 다른 게시판 스킨의 카테고리 목록 출력 부분을 참조하셔서 해보시면 되지 않을까요?

  • 2023.04.27 19:19 #1759477
    윤삼님 진심으로 감사드립니다
  • 2023.05.31 00:10 #1765532
    혹시 특정 확장변수는 출력 안되게 할수 있을까요?
  • 2023.05.31 00:17 #1765536

    해당 게시판에서 설정하시면 될 겁니다.
    게시판 관리 > 확장변수 탭에서 해당 확장변수의 검색을 허용하지 않는 것으로 설정해보세요.

  • 2023.05.31 00:33 #1765541
    아 맞다!!!! 왜 그걸 잊고 있었지!!! 처음 설치했을때 검색으로 안해서 안나와서 몇번이나 보고 했었는데..
    윤삼님 감사합니다 ^^
  • 2023.05.31 01:12 #1765546
    애드온이다보니 게시판 모듈과 별개라고 충분히 생각하실 수 있죠 ㅎㅎㅎ
  • 2023.07.20 06:23 #1776492

    새로 작업중인 사이트에서 이상하게
    다중검색 애드온 적용하면 바로 관리자 및 홈페이지 자체 접속이 않지 않네요

    이렇게 에러 메시지 가 뜨고요 반응이 없습니다.
    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

  • 2023.07.20 06:47 #1776500
    버전이 어떻게 되시나요? 여기에는 0.5.0까지 있습니다만, 깃허브에는 0.5.3까지 업데이트를 했었더라구요.
    혹시 0.5.3에서도 같은 문제가 나타나나요?
  • 2023.07.20 07:49 #1776513
    0.5.1이네요 xetown에서 받았는데 업그레이드를 해봐야겠네요
  • 2023.07.20 07:54 #1776516

    방금 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

  • 2023.07.20 08:29 #1776522

    아, php 버전은 어떻게 되시나요?

    7.4 미만에서는 에러 가능성이 있어요. 그리고 8.0 이상에서는 테스트를 못해봤구요.

  • 2023.07.20 10:59 #1776531
    카페24 입니다. UTF-8 (PHP7.3, mariadb-10.0.x)
    7.3이군요 ~
  • 2023.07.20 11:32 #1776539

    php 7.4 업그레이드 후 잘 적용 되었습니다. 

    검색 옵션 체크 하고 정상적으로 나옵니다.

    윤삼님 정말 감사합니다.

  • 2023.07.20 11:50 #1776547

    그건 확장변수 (다중검색이 아니라) 바로 수정 애드온 쪽이에요.

    (덧. 해결하셨나보네요?)

  • 2023.07.20 12:19 #1776555
    첨에 에러 나왔는데
    검색 옵션 활성화 시키니 정상작동합니다.
    정말 감사합니다.
  • 2023.07.20 08:17 #1776519
    레이아웃하고 충돌 같기도 하고 전에 잘 썼는데 이상 하네요 ~ ^^
  • 2024.01.11 10:15 #1803295

    자료 감사합니다.

     

    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

     

    222.JPEG

     

    혹시 php버젼이 낮아서 발생하는 문제일까요? ( php7.2.3) 입니다.

  • 2024.01.11 10:40 #1803301
    네, 테스트 환경에 예시됐듯 7.4 이상이어야 할 겁니다.
    옛날 버전에는 없는 문법을 쓴 바람에...
  • 2024.01.11 11:43 #1803311
    아 네 제가 버젼을 올려야 겠습니다. ^^
  • 2024.07.05 05:41 #1830143
    게시판에 상담기능을 활성화 했을 경우 본인이 작성한 게시글만 노출이 되어야 하는데 모두 노출 되는 현상이 발생을 하네요. 혹시 이와 관련해서 처리 방법을 알고 계실까요?
  • 2024.07.05 09:01 #1830150
    // 상담 게시판 확인 및 권한 검증
    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에 이런식으로 코드 추가해서 사용하니 작동을 하긴 하는데. 시간되실때 한번 살펴봐 주세요.
  • 2024.07.05 23:47 #1830226
    앗, 뭔가 이렇게 하면 될 것 같은데요? 코드 제공 감사합니다!