Задача довольно простая, но на всякий случай изложу готовое решение, на тот случай если кто-то сходу не разберется.
Интеграция гугло-поиска может пригодится если Sphinx вы установить не в силах (к примеру виртуальный хостинг, как это в моем случае), а плагин aceMySearch вам по каким-то причинам не подходит (не хотите получить дополнительную нагрузку на сайт или просто хотите немного заработать на AdSense :)
Первым делом вам нужно перейти на http://www.google.com/cse/?hl=ru. Если у вас нет аккаунта google — то вам придется зарегистрироваться (в дальнейшем вы сможете добавить к нему и гуглопочту, и AdSense и любой другой сервис google).
Дальше последует небольшая настройка. Тут все интуитивно понятно, обращу ваше внимание только на то, что вам надо задать конкретный адрес страницы, где будут выведены результаты. В моем случае это mysite.ru/page/find
Итогом настройки станет код поисковой формы, которую вы можете разместить на вашем сайте, и код, который необходимо разместить на странице результатов.
Код формы вы вставляете непосредственно в нужное место шаблона, без изменений.
Теперь вывод результатов.
Как вы успели заметить, выводим мы результаты на статической странице, поэтому необходимо ее создать (aceAdminPanel вам в помощь). И немного подредактировать плагин page.
Мы внесем два небольших измения:
1. Добавим реакцию в plugins/page/classes/actions/ActionPAge.class на url нашей статической страницы:
нас интересует функция EventShowPage(), в концее ее кода необходимо заменить код
таким образом, теперь, если при отображении страницы mysite.ru/page/find/
мы будем подхватывать шаблон page_find.tpl, который необходимо создать (к примеру скопировав page.tpl)
В коде шаблона page_find.tpl мы размещаем код, который нам сгенерировал google для страницы результатов. Код размещаем после вывода основного контента (так мы сможем что-либо дописать перед выводом результатов поиска).
{if $oConfig->GetValue('view.tinymce')}
{$oPage->getText()}
{else}
{$oPage->getText()|nl2br}
{/if}
{literal}
<div id="cse-search-results"></div>
<script type="text/javascript">
var googleSearchIframeName = "cse-search-results";
var googleSearchFormName = "cse-search-box";
var googleSearchFrameWidth = 950;
var googleSearchDomain = "www.google.ru";
var googleSearchPath = "/cse";
</script>
<script type="text/javascript" src="http://www.google.com/afsonline/show_afs_search.js"></script>
{/literal}
Ну вот собственно и все. Если подключить AdSence, то google будет дополнительно выводить рекламные объявления.
Пример того, как это выглядит:
Так же можно глянуть на моем сайте (просто поищите что-либо :).
Надеюсь этот набросок статьи сможет помочь кому-либо в его начинаниях )
13 комментариев
По моему стандартный лучше ищет, да и без рекламы гугла.
Зачем этот поиск?
А вы внимательно прочитали? В самом начале:
«Интеграция гугло-поиска может пригодится если Sphinx вы установить не в силах (к примеру виртуальный хостинг, как это в моем случае), а плагин aceMySearch вам по каким-то причинам не подходит (не хотите получить дополнительную нагрузку на сайт или просто хотите немного заработать на AdSense :)»
Сказки не рассказывайте СДЛ сейчас поисковики блокируют за нарушение правил, за пиратство, за нарушение авторских прав, и просто правительственная цензура. Вот и получается, что сайт СДЛ а в поиске его нет)))
Я бы в такой ситуации рекомендовал бы поиск от Яндекса. Там рекламы нет, но зато есть ограничение в 1000 запросов в сутки. Для небольших проектов этого вполне достаточно.
Хотя тут конечно нужно смотреть где больше страниц в индексе.
ну принцип такой же — есть код формы, есть код для страницы вывода результатов. Остается зарегистрироваться в соответствующем сервисе яндекса.
Остальной принцип интеграции продемонстрирован.
13 комментариев
Зачем этот поиск?
«Интеграция гугло-поиска может пригодится если Sphinx вы установить не в силах (к примеру виртуальный хостинг, как это в моем случае), а плагин aceMySearch вам по каким-то причинам не подходит (не хотите получить дополнительную нагрузку на сайт или просто хотите немного заработать на AdSense :)»
делайте СДЛ (:
Хотя тут конечно нужно смотреть где больше страниц в индексе.
яндекс конешно можно тоже подключить — это вопрос на любителя.
просто хотелось продемонстрировать способ — хорошо когда на сайте накапливаются готовые решения, пусть даже и таких простых задач (:
Остальной принцип интеграции продемонстрирован.
Что делать?