일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- UML
- chart.js
- 안드로이드
- 설치
- 자바스크립트
- roundcube
- WebView
- 안드로이드 푸시
- 자동 생성
- php 취약점
- javascript
- soundpool
- Mail Server
- xe
- FCM
- 우분투
- C#
- not working
- mysql
- android 효과음
- 안드로이드 gcm
- 폼메일
- C# IO
- curl
- html5
- Android
- php 시큐어코딩
- 안드로이드 푸쉬
- PHP
- dovecot
- Today
- Total
그러냐
[xe]모바일에서의 통합검색기능 본문
이유는 간단합니다.
통합검색모듈에서 모바일 기능이 아직 들어있지 않기 때문입니다.
오늘은 통합검색기능에 모바일기능을 넣어주고 모바일 레이아웃에서도 통합검색기능을 추가하는 방법을 알아보도록 하겠습니다.
1. 레이아웃에 검색폼추가
1
2
3
4
5
6
7
8
9
10 |
<div class = "hd" > <form action= "{getUrl()}" method= "post" class = "search" > <input type= "hidden" name= "mid" value= "{$mid}" /> <input type= "hidden" name= "act" value= "IS" /> <input type= "hidden" name= "where" value= "{$where}" /> <input type= "hidden" name= "search_target" value= "title_content" /> <input name= "is_keyword" type= "text" class = "inputText" value= "{htmlspecialchars($is_keyword)}" /> <input type= "submit" class = "bn dark" value= "통합검색" /> </form> </div> |
위는 수정전의 화면, 아래는 수정후의 화면입니다.
2. integration_search.mobile.php 생성
레이아웃 수정만으로도 검색은 가능합니다.
하지만 PC화면의 검색결과가 나타나게 됩니다.
앞서 설명드린데로 integration_search.mobile.php 화일이 없기 때문입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96 |
<?php //class integration_searchView extends integration_search { class integration_searchMobile extends integration_search {
var $target_mid = array (); var $skin = 'default' ;
/** * @brief 초기화 **/ function init() { }
/** * @brief 통합 검색 출력 **/ function IS() { $oFile = &getClass( 'file' ); $oModuleModel = &getModel( 'module' );
// 권한 체크 if (! $this ->grant->access) return new Object(-1, 'msg_not_permitted' );
$config = $oModuleModel ->getModuleConfig( 'integration_search' ); if (! $config ->skin) $config ->skin = 'default' ; Context::set( 'module_info' , unserialize( $config ->skin_vars)); //$this->setTemplatePath($this->module_path."/skins/".$config->skin."/"); $this ->setTemplatePath( $this ->module_path. "/m.skins/" . $config ->skin. "/" ); $target = $config ->target; if (! $target ) $target = 'include' ; $module_srl_list = explode ( ',' , $config ->target_module_srl);
// 검색어 변수 설정 $is_keyword = Context::get( 'is_keyword' );
// 페이지 변수 설정 $page = (int)Context::get( 'page' ); if (! $page ) $page = 1;
// 검색탭에 따른 검색 $where = Context::get( 'where' );
// integration search model객체 생성 if ( $is_keyword ) { $oIS = &getModel( 'integration_search' ); switch ( $where ) { case 'document' : $search_target = Context::get( 'search_target' ); if (!in_array( $search_target , array ( 'title' , 'content' , 'title_content' , 'tag' ))) $search_target = 'title' ; Context::set( 'search_target' , $search_target );
$output = $oIS ->getDocuments( $target , $module_srl_list , $search_target , $is_keyword , $page , 10); Context::set( 'output' , $output ); $this ->setTemplateFile( "document" , $page ); break ; case 'comment' : $output = $oIS ->getComments( $target , $module_srl_list , $is_keyword , $page , 10); Context::set( 'output' , $output ); $this ->setTemplateFile( "comment" , $page ); break ; case 'trackback' : $search_target = Context::get( 'search_target' ); if (!in_array( $search_target , array ( 'title' , 'url' , 'blog_name' , 'excerpt' ))) $search_target = 'title' ; Context::set( 'search_target' , $search_target );
$output = $oIS ->getTrackbacks( $target , $module_srl_list , $search_target , $is_keyword , $page , 10); Context::set( 'output' , $output ); $this ->setTemplateFile( "trackback" , $page ); break ; case 'multimedia' : $output = $oIS ->getImages( $target , $module_srl_list , $is_keyword , $page ,20); Context::set( 'output' , $output ); $this ->setTemplateFile( "multimedia" , $page ); break ; case 'file' : $output = $oIS ->getFiles( $target , $module_srl_list , $is_keyword , $page , 20); Context::set( 'output' , $output ); $this ->setTemplateFile( "file" , $page ); break ; default : $output [ 'document' ] = $oIS ->getDocuments( $target , $module_srl_list , 'title' , $is_keyword , $page , 5); $output [ 'comment' ] = $oIS ->getComments( $target , $module_srl_list , $is_keyword , $page , 5); $output [ 'trackback' ] = $oIS ->getTrackbacks( $target , $module_srl_list , 'title' , $is_keyword , $page , 5); $output [ 'multimedia' ] = $oIS ->getImages( $target , $module_srl_list , $is_keyword , $page , 5); $output [ 'file' ] = $oIS ->getFiles( $target , $module_srl_list , $is_keyword , $page , 5); Context::set( 'search_result' , $output ); $this ->setTemplateFile( "index" , $page ); break ; } } else { $this ->setTemplateFile( "no_keywords" ); } } } ?> |
작업은 integration_search.view.php를 integration-search.mobile.php로 복사하신후 수정하시는 것이 빠릅니다.
자세히 살펴보시면 두군데 바뀌었습니다.
즉
와
//$this->setTemplatePath($this->module_path."/skins/".$config->skin."/");
가 바뀌었습니다.
검색을 해보니 m.skins/default/index.html이 없다고 아우성이네요.
3. 모바일 스킨생성
m.skins 폴더와 해당 화일을 만들어줘야하지만 이 역시 간단합니다.
기존 skins 폴더를 통채로 서브디렉토리 및 서브화일까지 포함해서 m.skins로 복사해넣으시면 됩니다.
리눅스의 경우
1 |
cp skins/ m.skins -f -R |
4. 커스터마이징
이제 드디어 모바일 레이아웃을 입은 검색결과 화면이 나타납니다.
하지만 모바일에서 별 필요도 없는 엮인글, 이미지/동영상, 첨부화일 등등이 다 출력되면서 화면이 보기 싫습니다.
해서 문서와 댓글만 남기고 몽땅 다 없앴습니다.
integration_search.mobile.php의 fuction IS()에서 필요없는 부분을 주석처리하고
m.skins/default/index.html과 m.skins/default/header.html에서 각기 필요없는 부분을 삭제하시며됩니다.
커스터마이징은 각자의 취향이고 수정이라기 보다는 필요없는 부분을 삭제만 하기 때문에 별도로 설명드리지 않습니다.
그럼 모바일과 함께 즐거운 시간 되시기를....
●?Who's 카르마
이 길의 끝이 어디인지 아직 알지 못합니다.
-
-
<fieldset>
하이퍼링크
<input title="URL" class="link" type="text" value="http://" /><input id="target" type="checkbox" value="" />
</fieldset>
-
<fieldset class="num">
칸 수 지정
- <input id="row" type="text" maxlength="2" value="4" />
- <input id="col" type="text" maxlength="2" value="4" />
표 속성 지정
- <input id="table_border_width" type="text" maxlength="2" value="1" />
- <input id="table_border_color" type="text" maxlength="7" value="#CCCCCC" />
- <input id="table_bg_color" type="text" maxlength="7" value="#000000" />
파일 크기 제한 : 8.00MB (허용 확장자 : *.*)
- ?
- ?
저는 잘 안되네요. 위에 말씀해 주신 대로 다 한(?) 것 같은데..
모바일에서 검색을 해 보면 PC 화면의 검색 결과가 나오네요..
혹시 XE 버전이 1.4.5.10 이어서 그런건가요? ^^;
-
1.4.5.10을 사용하는 사이트입니다.
setting에서 모바일뷰 사용에 체크하셨는지...
레이아웃의 모바일레이아웃의 사용하시는 레이아웃 설정에서
레이아웃 일괄적용
모바일뷰 일괄적용 두군데 체크하고 저장하십시요.
그래도 안되신다면 수정에 문제가 좀 있으실 것같네요.
- ?
빠른 답변 감사드립니다. 레이아웃 설정을 해 보았는데도 잘 안되어서
말씀해 주신 대로 혹시 수정 쪽에 문제가 없을까 살펴 보았더니..
파일을 만드는 과정에서 문제가 있었던 것 같습니다. ^^;
제가 윈도우즈 탐색기에서 integration_search.view.php 파일을 바로 복사해서
integration_search.mobile.php 파일을 만들었더니 문제가 생긴 것 같습니다.
에디터 플러스에서 integration_search.view.php 를 불러 온 다음
수정해서 integration_search.mobile.php 파일을 만들었더니 이제 검색이 되네요. ^^
정말 좋은 팁을 올려 주셔서 감사합니다. ^^
- ?
http://www.wildgreen.co.kr/ 사이트를 가 보았는데, 참 잘해 놓으셨네요.
검색 부분도 '도감', '식물정보'도 나오도록 해 두셨고요.
특히 '도감' 부분이 놀라웠는데, 이런 부분은 어떻게 하면 되는지 궁금해지네요. ^^
저는 검색 결과에 해당 문서가 어느 게시판의 글인지 '게시판 명'이 나오도록 하고 싶은데..
비전문가가 검색만으로 하려고 하다 보니 한계를 느낍니다. ^^;
-
코어에 포함된 integration_search가 아니고 integration_seach의 확장모듈을 제작해서 사용하고 있습니다.
손을봐서 마켓에 등록할까 생각중인데
기왕이면 검색키워드를 검색창에 출력해주는 autocomplete까지 포함시키려다가 손을 놓고 있네요.
'php' 카테고리의 다른 글
php.ini 설정하기 (0) | 2016.01.25 |
---|---|
[PHP] 두 날짜 차이 "0년 0개월 0일" 구하기 (2) | 2016.01.25 |
FORM 서브밋 시 return false 의 중요성 (0) | 2016.01.25 |
날짜 연산 날짜 차이 일수 구하기 (0) | 2016.01.25 |
이미지 다운로드시 무조건 다운로드창 뜨게 하기 (0) | 2016.01.25 |
멋지십니다. 언젠가 한번은 꼭 이용해 볼 가치가 있는 팁이네요~^^