들어가며
기존에 포스팅 하였던 티스토리 블로그에 구글 맞춤검색 달기와 CSE(맞춤 검색 엔진)의 생성 방법까지는 같으므로, 이 포스팅에서는 CSE 의 생성 과정은 생략하도록 하겠습니다.여기서 다룰 내용은 검색창에서 검색 할 키워드 입력 시, DIV 의 스타일 중 display 의 항목을 변경하여 검색 결과를 출력해 주는 방식입니다.
특징
페이지의 이동 없이, 현재 보고 있는 페이지 내에서 처리가 가능합니다.주의
※ 이미 iframe 방식으로 블로그에 CSE를 적용하신 경우, 원래대로 되돌리신 후 이 방법을 적용해 주시기 바랍니다. 그렇지 않을 경우 정상적으로 작동하지 않을 수도 있습니다.※ 자바스크립트가 사용 가능해야 합니다.
CSE 스크립트
다음의 코드를 적당한 부분(저는 Head에 넣었습니다.)에 넣어주도록 합니다.
<!-- Google CSE -->
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
var customSearchControl = null;
function executeQuery() {
var textNode = document.getElementById('검색창의 id');
if (textNode.value == '') {
customSearchControl.clearAllResults();
document.getElementById('cse').style.display = "none";
} else {
customSearchControl.execute(textNode.value);
document.getElementById('cse').style.display = "block";
}
}
google.load('search', '1', {language : 'ko'});
google.setOnLoadCallback(function() {
customSearchControl = new google.search.CustomSearchControl('검색엔진 고유 ID');
customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
var options = new google.search.DrawOptions();
options.enableSearchResultsOnly();
customSearchControl.draw('cse', options);
}, true);
</script>
굵은 글자로 쓰여진 부분을 반드시 수정해 주시기 바랍니다.<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
var customSearchControl = null;
function executeQuery() {
var textNode = document.getElementById('검색창의 id');
if (textNode.value == '') {
customSearchControl.clearAllResults();
document.getElementById('cse').style.display = "none";
} else {
customSearchControl.execute(textNode.value);
document.getElementById('cse').style.display = "block";
}
}
google.load('search', '1', {language : 'ko'});
google.setOnLoadCallback(function() {
customSearchControl = new google.search.CustomSearchControl('검색엔진 고유 ID');
customSearchControl.setResultSetSize(google.search.Search.FILTERED_CSE_RESULTSET);
var options = new google.search.DrawOptions();
options.enableSearchResultsOnly();
customSearchControl.draw('cse', options);
}, true);
</script>
다음의 코드를 검색 결과가 보여질 위치에 끼워 넣도록 합니다.
<!-- 맞춤 검색 결과가 표시 될 부분 (CSE Start) -->
<div id="cse" style="width:100%; display:none;"></div> <!-- CSE End -->
<div id="cse" style="width:100%; display:none;"></div> <!-- CSE End -->
마지막으로 기존 검색창이 달려 있는 부분을 주석처리 한 후, 다음과 같이 변경해 주시기 바랍니다.
<!-- 검색창 부분 -->
<input id="searchText" class="searchText" type="text" name="" value="" onFocus="this.value=''" onkeypress="if (event.keyCode == 13) { executeQuery() }"/>
iframe 방식과 다르게 은 신경쓰실 필요 없습니다.<input id="searchText" class="searchText" type="text" name="" value="" onFocus="this.value=''" onkeypress="if (event.keyCode == 13) { executeQuery() }"/>
제 블로그의 경우 헤더 아래 부분에 위의 코드를 넣고, 본문이 표시되는 부분 전체를 다른 id(cBody)를 가진 div 태그로 묶어, 검색할 키워드 입력 후 엔터를 누르면 두 div 의 display 옵션이 변경되게끔 하였습니다.
<!-- Google CSE -->
<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
var customSearchControl = null;
function executeQuery() {
var textNode = document.getElementById('검색창의 id');
if (textNode.value == '') {
customSearchControl.clearAllResults();
document.getElementById('cse').style.display = "none";
// 추가한 부분
document.getElementById('cBody').style.display = "block";
} else {
customSearchControl.execute(textNode.value);
document.getElementById('cse').style.display = "block";
// 추가한 부분
document.getElementById('cBody').style.display = "none";
}
...
<!-- ==Header Start========================== -->
<div id="header">
...
블로그 상단의 메뉴들이 이 곳에 있습니다.
...
</div> <!-- Header End -->
<!-- ==CSE Start========================== -->
<div id="cse" style="width:100%; display:none;"></div> <!-- CSE End -->
<!-- ==Content Body Start========================== -->
<div id="cBody">
...
엔트리, 태그구름 등등...
...
</div>
<div id="footer">
...
이건 그냥 참고만 해 주세요 ^^;<script src="http://www.google.com/jsapi" type="text/javascript"></script>
<script type="text/javascript">
var customSearchControl = null;
function executeQuery() {
var textNode = document.getElementById('검색창의 id');
if (textNode.value == '') {
customSearchControl.clearAllResults();
document.getElementById('cse').style.display = "none";
// 추가한 부분
document.getElementById('cBody').style.display = "block";
} else {
customSearchControl.execute(textNode.value);
document.getElementById('cse').style.display = "block";
// 추가한 부분
document.getElementById('cBody').style.display = "none";
}
...
<!-- ==Header Start========================== -->
<div id="header">
...
블로그 상단의 메뉴들이 이 곳에 있습니다.
...
</div> <!-- Header End -->
<!-- ==CSE Start========================== -->
<div id="cse" style="width:100%; display:none;"></div> <!-- CSE End -->
<!-- ==Content Body Start========================== -->
<div id="cBody">
...
엔트리, 태그구름 등등...
...
</div>
<div id="footer">
...
'컴퓨터' 카테고리의 다른 글
공유기(EDIMAX BR-6204Wg)와 시리얼 통신 하기 (0) | 2011.07.11 |
---|---|
티스토리 초대장을 드립니다. (종료) (11) | 2011.07.08 |
Firefox 에서 한글로 input 입력 시 onkeypress, onkeyup, onkeydown 안 먹는 문제 해결 트릭 (1) | 2011.07.08 |
DD-WRT 공유기에 텍스트큐브 설치하고 포트 포워딩 하기 (4) | 2011.07.07 |
DD-WRT 공유기에서 OPKG 사용하기 (2) | 2011.07.06 |
티스토리 블로그에 구글 맞춤검색 달기 (iframe 방식) (2) | 2011.07.02 |
자신의 블로그에 구글 번역 기능 달기 (2) | 2011.07.01 |
USB 메모리 4종 읽기 속도 비교 (0) | 2011.07.01 |
티스토리 이메일 이벤트에 당첨되어 버렸습니다. (2) | 2011.06.30 |
블루투스 키보드 (IN-BK01) + 동글 (H-20) (0) | 2011.06.30 |
IE9 이상으로 브라우저를 업그레이드하거나, 크롬, 파이어폭스 등 최신 브라우저를 이용해주세요.