Яндекс.Поиск для сайта — различия между версиями
Velross (обсуждение | вклад) |
Velross (обсуждение | вклад) |
||
(не показана 1 промежуточная версия этого же участника) | |||
Строка 1: | Строка 1: | ||
+ | <p>'''Актуально для версии 2.9'''</p> | ||
+ | |||
<h3>Внедрение Яндекс.Поиска на сайте</h3> | <h3>Внедрение Яндекс.Поиска на сайте</h3> | ||
Строка 134: | Строка 136: | ||
Вызов результатов поиска <source lang="xml"><xsl:value-of select="document('udata://search/yandex_search_result')/udata" disable-output-escaping="yes"/></source> | Вызов результатов поиска <source lang="xml"><xsl:value-of select="document('udata://search/yandex_search_result')/udata" disable-output-escaping="yes"/></source> | ||
− | + | ||
+ | [[Категория:Сторонние сервисы и программы]][[Категория:Верстка в TPL]][[Категория:Верстка в XSLT]][[Категория:Написание кастомных макросов]] |
Текущая версия на 17:45, 7 июня 2013
Актуально для версии 2.9
Внедрение Яндекс.Поиска на сайте
На стороне Яндекса
1. Заходим на сайт http://site.yandex.ru/
2. Нажимаем кнопку "Установить поиск"
3. Шаг 1. Область поиска
а) Название поиска - придумываем для себя название поиска, т.к. таких поисков может быть несколько (обязательно);
б) Нажимаем на ссылку "+Добавить сайты", в появившемся окне вводим названия сайтов, на которых будем внедрять поиск (обязательно);
в) Если желаем добавить категории Яндекс.Каталога, то нажимаем кнопку "Добавить категории Яндекс.Каталога";
г) Вы можете создать или добавить поисковые темы, нажав на кнопку "Добавить поисковые темы";
д) Если Вы желаете получать сообщения об изменении статуса поиска, то в соответствующее поле введите свой адрес электронной почты.
4. Шаг 2. Форма поиска
а) Настройте цвет фона и размер шрифта;
б) Определите область поиска по-умолчанию (на сайте, в Интернете, отключить);
в) выберите тип формы (прямоугольная, в виде стрелки);
г) посмотрите на итоговый вид формы.
5. Шаг 3. Результаты поиска
3.1 В секции "Где показывать результаты" выберите пункт "в iframe на странице" и введите адрес: http://mysite.ru/search/search_do/
а) в результатах поиска может появляться реклама, Вы можете настроить её появление в стороне от результатов поиска или в одну колонку. В последнем случае, поставьте флажок на опции "показывать рекламу и результаты поиска в одну колонку";
б) Если желаете "Открывать страницу результатов в новой вкладке", то поставьте флажок на соответствующей опции.
3.2 В секции "Основные свойства страницы", Вам необходимо настроить цвет фона страницы результатов поиска и выбрать шрифт.
3.3 В секции "Результаты поиска", Вы можете:
а) настроить цвет, размер и свойства шрифта (полужирный, курсив) для названия найденной страницы в результатах поиска;
б) настроить цвет, размер и свойства шрифта (полужирный, курсив) для описания найденной страницы в результатах поиска;
в) включить или отключить отображение адреса домена, а также настроить цвет и свойства шрифта;
г) включить или отключить отображение ссылки на сохраненную копию, а также настроить цвет и свойства шрифта.
3.4 В секции "Ссылки и навигация", вы можете настроить цвета посещенных ссылок и ссылок при наведении на них курсора, а также цвета навигации.
6. Шаг 4. Проверка поиска. Если Ваш сайт ещё не был проиндексирован Яндексом, то скорее всего при каком-либо запросе Вы получите ответ, что ничего не найдено.
7. Шаг 5. Код для вставки на сайт. Вы получите два кода:
а) код для поисковой формы
б) код, для размещения на странице результатов поиска.
На стороне сайта
Внедрение на TPL-шаблонах (на примере стандартного)
Внедрить код мы можем как непосредственно вставив его в шаблон, так и заключив код в макрос и затем вызывая его в нужных местах шаблона. Пойдем по второму пути.
8. Открываем файл /classes/modules/search/__custom.php и после комментария //TODO: Write your macroses here пишем две функции, первая будет выводить форму, а вторая результат поиска:
//TODO: Write your macroses here
function yandex_search_form () {
$form=<<<YANDEXFORM
<div class="ya-site-form ya-site-form_inited_no" onclick="return {'bg': '#ffccff', 'target': '_self', 'language': 'ru', 'suggest':
true, 'tld': 'ru', 'site_suggest': true, 'action': 'http://mysite.ru/search/search_do/', 'webopt': false, 'fontsize': 12, 'arrow':
false, 'fg': '#000000', 'searchid': '1927492', 'logo': 'rb', 'websearch': false, 'type': 3}">
<form action="http://yandex.ru/sitesearch" method="get" target="_self">
<input type="hidden" name="searchid" value="1927492" />
<input type="hidden" name="l10n" value="ru" /><input type="hidden" name="reqenc" value="" />
<input type="text" name="text" value="" />
<input type="submit" value="Найти" />
</form>
</div>
<style type="text/css">.ya-page_js_yes .ya-site-form_inited_no { display: none; }</style>
<script type="text/javascript">(function(w,d,c){var s=d.createElement('script'),h=d.getElementsByTagName('script')[0],e=d.documentElement;
(' '+e.className+' ').indexOf(' ya-page_js_yes ')===-1&&(e.className+=' ya-page_js_yes');s.type='text/javascript';s.async=true;
s.charset='utf-8';s.src=(d.location.protocol==='https:'?'https:':'http:')+'//site.yandex.net/v2.0/js/all.js';
h.parentNode.insertBefore(s,h);(w[c]||(w[c]=[])).push(function(){Ya.Site.Form.init()})})(window,document,'yandex_site_callbacks');</script>
YANDEXFORM;
return $form;
}
function yandex_search_result () {
$result=<<<YANDEXRESULT
<div id="ya-site-results" onclick="return {'tld': 'ru', 'language': 'ru', 'encoding': ''}"></div>
<script type="text/javascript">(function(w,d,c){var s=d.createElement('script'),h=d.getElementsByTagName('script')[0];
s.type='text/javascript';s.async=true;s.charset='utf-8';
s.src=(d.location.protocol==='https:'?'https:':'http:')+'//site.yandex.net/v2.0/js/all.js';h.parentNode.insertBefore(s,h);
(w[c]||(w[c]=[])).push(function(){Ya.Site.Results.init()})})(window,document,'yandex_site_callbacks');</script>
YANDEXRESULT;
return $result;
}
};
Обратите внимание, что файл _custom.php должен быть сохранен в кодировке UTF-8 (без BOM), а также что после меток <<<METKA недолжно быть лишних символов, включая пробела.
9. Создадим файл permissions.custom.php и пропишем права на наши макросы:
<?php
$permissions = Array(
'search' => Array('yandex_search_form','yandex_search_result')
);
?>
10. Сделаем вызов макроса %search yandex_search_form()% в шаблоне /tpls/search/home.tpl, а также в шаблоне /tpls/search/default.tpl для секции $FORMS['search_form']
11. Сделаем вызов макроса %search yandex_search_result()% в шаблоне /tpls/search/default.tpl внутри секций $FORMS['search_empty_result'], $FORMS['search_form'].
Внедрение на XSLT-шаблонах (на примере стандартного)
В этот раз вставим код без использования макросов.
Для начала нам необходимо доработать код под XSLT.
Заключим тег <div> в элемент <xsl:text></xsl:text>, а скрипт в конструкцию <![CDATA[ ]]>:
<xsl:text disable-output-escaping="yes">
<div class="ya-site-form ya-site-form_inited_no" onclick="return{'bg': '#ffccff', 'target': '_self', 'language':
'ru', 'suggest': true, 'tld': 'ru', 'site_suggest': true, 'action': 'http://mysite.ru/search/search_do/', 'webopt':
false, 'fontsize': 12, 'arrow': false, 'fg': '#000000', 'searchid': '1927492', 'logo': 'rb', 'websearch': false, 'type': 3}">
</xsl:text>
<form action="http://yandex.ru/sitesearch" method="get" target="_self">
<input type="hidden" name="searchid" value="1927492" />
<input type="hidden" name="l10n" value="ru" />
<input type="hidden" name="reqenc" value="" />
<input type="text" name="text" value="" />
<input type="submit" value="Найти" />
</form>
<xsl:text disable-output-escaping="yes">
</div>
</xsl:text>
<style type="text/css">.ya-page_js_yes .ya-site-form_inited_no { display: none; }</style>
<script type="text/javascript">
<![CDATA[(function(w,d,c){var s=d.createElement('script'),h=d.getElementsByTagName('script')[0],e=d.documentElement;
(' '+e.className+' ').indexOf(' ya-page_js_yes ')===-1&&(e.className+=' ya-page_js_yes');
s.type='text/javascript';s.async=true;s.charset='utf-8';
s.src=(d.location.protocol==='https:'?'https:':'http:')+'//site.yandex.net/v2.0/js/all.js';h.parentNode.insertBefore(s,h);
(w[c]||(w[c]=[])).push(function(){Ya.Site.Form.init()})})(window,document,'yandex_site_callbacks');]]>
</script>
Исправленный код для вывода результатов поиска:
<xsl:text disable-output-escaping="yes"> <div id="ya-site-results" onclick="return {'tld': 'ru', 'language': 'ru', 'encoding': ''}">
</div><script type="text/javascript">(function(w,d,c){var s=d.createElement('script'),h=d.getElementsByTagName('script')[0];
s.type='text/javascript';s.async=true;s.charset='utf-8';
s.src=(d.location.protocol==='https:'?'https:':'http:')+'//site.yandex.net/v2.0/js/all.js';h.parentNode.insertBefore(s,h);
(w[c]||(w[c]=[])).push(function(){Ya.Site.Results.init()})})(window,document,'yandex_site_callbacks');</script>
</xsl:text>
Поместим код поисковой формы в файле /xsltTpls/modules/search/search-form.xsl внутри <xsl:template name="search-form-left-column">, а также в файле /xsltTpls/modules/search/search-results.xsl внутри шаблона <xsl:template match="udata[@method = 'search_do']">, там же разместим код для вывода результатов поиска.
Если же Вы будете использовать макросы, то дорабатывать код не нужно, достаточно вызвать его в нужном месте шаблона следующим образом:
Вызов формы
<xsl:value-of select="document('udata://search/yandex_search_form')/udata" disable-output-escaping="yes"/>
Вызов результатов поиска
<xsl:value-of select="document('udata://search/yandex_search_result')/udata" disable-output-escaping="yes"/>