В предыдущих статьях я упоминал о различных поисках в блоге, используя различные сервисы. Сам остановился на поиске от Яндекса, потому что он хорошо работает (но не всегда, как оказалось) и не запихивает никакой рекламы в результаты.
В этой статье я решил продвинуться в своих исследования по этому вопросу и копать в сторону связки Google Search Api + jQuery + Ajax. Звучит устрашающе? Это "взрослые" штуки: выводить результаты гуглопоиска на этой же странице, без перезагрузки.
Как оказалось, всё уже давно изобрели и рассмотрели. Превосходный мануал выложен на этом сайте. Вот его то мы и будем копать. Моё демо находится немного ниже.
Что это за поиск?
Это не просто поиск статей в блоге, возле поля ввода запроса можно заметить четыре опции:
-- обычный поиск материалов
-- поиск картинок
-- поиск видео
-- поиск новостей (последнее актуально для веб-поиска)
Результаты поиска отображаются чуть ниже и разделены кнопкой "Дальше".
В центре всего сабжа выделим скрипт script.js. В той статье по ссылке подробно разъяснено, как этот скрипт заимоидействует с гугловским поисковым api.
А вот мой вариант - script.js. Я заточил его под использование в блоге (выкинул лишнее). Чтобы поиск работал на другом сайте или блоге, нужно исправить url с моего на свой:
var config = {
siteURL : 'blogger.omg-linux.ru', // url блога
searchSite : true,
type : 'web',
append : false,
perPage : 8, // Максимум из того, что разрешено
page : 0 // Стартовая страница (?)
}
Стили для этого блока с поиском получились такие:
<style>
*{
margin:0;
padding:0;
}
#page{
/* The main container div */
width:620px;
margin:100px auto 0;
}
#searchForm{
/* The search form. */
background-color:#4C5A65;
padding:50px 50px 30px;
margin:80px 0;
position:relative;
-moz-border-radius:16px;
-webkit-border-radius:16px;
border-radius:16px;
}
fieldset{
border:none;
}
#searchInputContainer{
/* This div contains the transparent search box */
width:420px;
height:36px;
background:url("http://4.bp.blogspot.com/-z_dxhHY9UeE/Tq5dM12wH0I/AAAAAAAAGuc/aZSH9YBM54o/s1600/searchBox.png") no-repeat;
float:left;
margin-right:12px;
}
#s{
/* The search text box. */
border:none;
color:#888888;
background:url("http://4.bp.blogspot.com/-z_dxhHY9UeE/Tq5dM12wH0I/AAAAAAAAGuc/aZSH9YBM54o/s1600/searchBox.png") no-repeat;
float:left;
font-family:Arial,Helvetica,sans-serif;
font-size:15px;
height:36px;
line-height:36px;
margin-right:12px;
outline:medium none;
padding:0 0 0 35px;
text-shadow:1px 1px 0 white;
width:385px;
}
/* The UL that contains the search type icons */
.icons{
list-style:none;
margin:10px 0 0 335px;
height:19px;
position:relative;
}
.icons li{
background:url("http://4.bp.blogspot.com/-66luRRf-P_g/Tq5dMrDNiiI/AAAAAAAAGuQ/k9ZiESwXw3w/s1600/icons.png") no-repeat;
float:left;
height:19px;
text-indent:-9999px;
cursor:pointer;
margin-right:5px;
}
/* Styling each icon */
li.web{ width:15px;}
li.web.active,
li.web:hover{ background-position:left bottom;}
li.images{ width:22px; background-position:-18px 0;}
li.images.active,
li.images:hover{ background-position:-18px bottom;}
li.news{ width:14px; background-position:-44px 0;}
li.news.active,
li.news:hover{ background-position:-44px bottom;}
li.videos{ width:17px; background-position:right 0;}
li.videos.active,
li.videos:hover{ background-position:right bottom;}
span.arrow{
/* The little arrow that moves below the icons */
width:11px;
height:6px;
margin:21px 0 0 5px;
position:absolute;
background:url('http://4.bp.blogspot.com/-Jn8cBCK1grE/Tq5dMVyevUI/AAAAAAAAGuE/JyacwjWvIUg/s1600/arrow.png') no-repeat;
left:0;
}
/* The submit button */
#submitButton{
background:url('http://1.bp.blogspot.com/-EQdJgWLz3qc/Tq5SY20Ro9I/AAAAAAAAGt4/0cZD_02ScHM/s1600/buttons.png') no-repeat;
width:83px;
height:36px;
text-indent:-9999px;
overflow:hidden;
text-transform:uppercase;
border:none;
cursor:pointer;
}
#submitButton:hover{
background-position:left bottom;
}
/* The Search tutorialzine.com / Search the Web radio buttons */
#searchInContainer{
float:left;
margin-top:12px;
width:330px;
}
label{
color:#DDDDDD;
cursor:pointer;
font-size:11px;
position:relative;
right:-2px;
top:-2px;
margin-right:10px;
white-space:nowrap;
/*float:left;*/
}
input[type=radio]{
cursor:pointer;
/*float:left;*/
}
/* Styling the search results */
.pageContainer{
/* Holds each page with search results. Has an inset bottom border. */
border-bottom:1px solid #5e7481;
margin-bottom:50px;
/* Adding a dark bottom border with box shadow */
-moz-box-shadow:0 1px 0 #798e9c;
-webkit-box-shadow:0 1px 0 #798e9c;
box-shadow:0 1px 0 #798e9c;
}
p.notFound{
text-align:center;
padding:0 0 40px;
}
/* Web & news results */
.webResult{ #text-shadow:1px 1px 0 #586a75;margin-bottom:50px;}
.webResult h2{
background-color:#5D6F7B;
font-size:18px;
font-weight:normal;
padding:8px 20px;
/* Applying CSS3 rounded corners */
-moz-border-radius:18px;
-webkit-border-radius:18px;
border-radius:18px;
}
.webResult h2 b{ color:#fff; }
.webResult h2 a{ color:#eee;border:none;}
.webResult p{ line-height:1.5;padding:15px 20px;}
.webResult p b{ color:gray;}
.webResult > a{ margin-left:20px;}
/* Image & video search results */
.imageResult{
float:left;
height:180px;
margin:0 0 20px 40px;
text-align:center;
width:152px;
overflow:hidden;
}
.imageResult img{ display:block;border:none;}
.imageResult a.pic{
border:1px solid #fff;
outline:1px solid #777;
display:block;
margin:0 auto 15px;
}
/* The show more button */
#more{
width:83px;
height:24px;
background:url('http://1.bp.blogspot.com/-UVgvYFq-JvE/Tq5QGWFD-aI/AAAAAAAAGtg/baF-NfEG-wM/s1600/more.png') no-repeat;
cursor:pointer;
margin:40px auto;
}
#more:hover{
background-position:left bottom;
}
.clear{
clear:both;
}
</style>Возни с css было больше всего. Кнопки я "русифицировал" в джимпе и переложил на хостинг пикасы.Цвета различных элементов подгоняются тоже здесь. Вариант в файле.
html код:
<div id="page"> <form id="searchForm" method="post"> <fieldset> <input id="s" type="text" /> <input type="submit" value="Submit" id="submitButton" /> <div id="searchInContainer"> <input type="radio" name="check" value="site" id="searchSite" checked /> <label for="searchSite" id="siteNameLabel">Искать в блоге</label> <input type="radio" name="check" value="web" id="searchWeb" /> <label for="searchWeb">Искать в интернете</label> </div> <ul class="icons"> <li class="web" title="Web Search" data-searchType="web">Web</li> <li class="images" title="Image Search" data-searchType="images">Images</li> <li class="news" title="News Search" data-searchType="news">News</li> <li class="videos" title="Video Search" data-searchType="video">Videos</li> </ul> </fieldset> </form> <div id="resultsDiv"> </div> </div>Код включает в себя радиокнопку web-поиска (см. ниже полный вариант демо).
Демо:
Можете попробовать разные запросы, типа: html, css, jquery, виджеты, яндекс и другие. Переключитесь в режим поиска картинок (видео и новостей у меня нет). Для возврата в статью просто обовите страницу в браузере.
Полная версия демо (включая web-поиск) находится на тестовом блоге.
И так, подведём итог.
Для установки такого поиска нужны:
1) Библиотека jQuery
2)
<link rel="stylesheet" type="text/css" href="http://ваш-хостинг.ру/styles.css" /> <script src="http://ваш-хостинг.ру/script.js"></script>3) И html код (см. выше), который нужно поставить непосредственно в то место, где нужен поиск.
О том, как устанавливаются и работают скрипты и стили, читайте здесь.
А у этой статьи есть продолжение!
Что ещё интересного?
Пользовательские поиски для блога.


Комментариев нет:
Отправить комментарий