| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- UML
- 자동 생성
- xe
- 안드로이드 푸쉬
- 안드로이드
- 폼메일
- C#
- 자바스크립트
- html5
- php 시큐어코딩
- curl
- 설치
- Mail Server
- not working
- 안드로이드 gcm
- PHP
- 안드로이드 푸시
- 우분투
- FCM
- C# IO
- roundcube
- php 취약점
- mysql
- android 효과음
- dovecot
- chart.js
- Android
- WebView
- javascript
- soundpool
- 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" />
</fieldset><fieldset class="color">표 속성 지정
- <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 |
멋지십니다. 언젠가 한번은 꼭 이용해 볼 가치가 있는 팁이네요~^^