이유는 간단합니다.
통합검색모듈에서 모바일 기능이 아직 들어있지 않기 때문입니다.
오늘은 통합검색기능에 모바일기능을 넣어주고 모바일 레이아웃에서도 통합검색기능을 추가하는 방법을 알아보도록 하겠습니다.
1. 레이아웃에 검색폼추가
<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>위의 소스를 사용하는 모바일 레이아웃의 layout.html의 적당한 위치에 추가해줍니다.
위는 수정전의 화면, 아래는 수정후의 화면입니다.
2. integration_search.mobile.php 생성
레이아웃 수정만으로도 검색은 가능합니다.
하지만 PC화면의 검색결과가 나타나게 됩니다.
앞서 설명드린데로 integration_search.mobile.php 화일이 없기 때문입니다.
<?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"); } } } ?>위의 내용으로 integraiont_search.mobile.php를 생생시켜줍니다.
작업은 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로 복사해넣으시면 됩니다.
리눅스의 경우
cp skins/ m.skins -f -R명령어로 간단히 복사했습니다.
4. 커스터마이징
이제 드디어 모바일 레이아웃을 입은 검색결과 화면이 나타납니다.
하지만 모바일에서 별 필요도 없는 엮인글, 이미지/동영상, 첨부화일 등등이 다 출력되면서 화면이 보기 싫습니다.
해서 문서와 댓글만 남기고 몽땅 다 없앴습니다.
integration_search.mobile.php의 fuction IS()에서 필요없는 부분을 주석처리하고
m.skins/default/index.html과 m.skins/default/header.html에서 각기 필요없는 부분을 삭제하시며됩니다.
커스터마이징은 각자의 취향이고 수정이라기 보다는 필요없는 부분을 삭제만 하기 때문에 별도로 설명드리지 않습니다.
그럼 모바일과 함께 즐거운 시간 되시기를....
멋지십니다. 언젠가 한번은 꼭 이용해 볼 가치가 있는 팁이네요~^^