Облако тегов
Благодаря возможностям модуля поиск
индексирование происходит не только по тексту, но и по тегам, если они, конечно, указаны.
Достаточно часто бывает очень удобно использовать поочередно оба поисковых механизма. Например, сначала отобрать страницы по нужному тегу, а потом вести поиск с помощью поискового индекса, в отобранных по тегам результатах.
Теги - это темы информационного сообщения. Под информационным сообщением понимается многое: элемент инфоблока, сообщение в форуме или блоге, теги фотографий и так далее. На данный момент ввод тегов возможен в статических страницах, элементах информационных блоков, в блогах и форумах.
Задача — создать облако тегов, которое будет в правой колонке, в разделе «Блог». Для начала в панели управления для статей блога создадим несколько тегов. Потом переходим на сайт, на тестовую страницу, и вызываем визуальный редактор. Нам надо получить код вызова компонента «Облако тегов», который находится в Служебные -> Поиск
. В настройках изменяем количество тегов, сортировку (по имени или релевантности) и выбираем область поиска: тип инфоблока и сам инфоблок (который был создан в панели управления под публикации статей блога):
Копируем код вызова компонента и закрываем редактор без сохранения:
<?
$APPLICATION->IncludeComponent(
"bitrix:search.tags.cloud",
"",
array(
"CACHE_TIME" => "3600",
"CACHE_TYPE" => "A",
"CHECK_DATES" => "N",
"COLOR_NEW" => "3E74E6",
"COLOR_OLD" => "C0C0C0",
"COLOR_TYPE" => "Y",
"FILTER_NAME" => "",
"FONT_MAX" => "50",
"FONT_MIN" => "10",
"PAGE_ELEMENTS" => "10",
"PERIOD" => "",
"PERIOD_NEW_TAGS" => "",
"SHOW_CHAIN" => "Y",
"SORT" => "NAME",
"TAGS_INHERIT" => "Y",
"URL_SEARCH" => "/search/index.php",
"WIDTH" => "100%",
"arrFILTER" => array("iblock_content"), // область поиска: тип инфобока
"arrFILTER_iblock_content" => array("1") // область поиска: сам инфобок
)
);
?>
В нужном месте вставляем вызов компонента, облако тегов уже работает. Даже можно посмотреть результат поиска по тегу, если была создана страница результатов поиска с использованием компонента Стандартная страница поиска
.
Осталось только скопировать шаблон компонента Облако тегов
и изменить под наш дизайн.
Удаляем весь код из скопированного шаблона local/templates/название_сайта/components/bitrix/search.tags.cloud/tags/template.php
и пишем свой код:
<?
if (!defined("B_PROLOG_INCLUDED") || B_PROLOG_INCLUDED!==true) die();
/** @var array $arParams */
/** @var array $arResult */
/** @global CMain $APPLICATION */
/** @global CUser $USER */
/** @global CDatabase $DB */
/** @var CBitrixComponentTemplate $this */
/** @var string $templateName */
/** @var string $templateFile */
/** @var string $templateFolder */
/** @var string $componentPath */
/** @var CBitrixComponent $component */
$this->setFrameMode(true);
?>
<? if (is_array($arResult['SEARCH']) && !empty($arResult['SEARCH'])): ?>
<div class="b-tag-weight">
<h3>Облако тегов</h3>
<ul>
<? foreach ($arResult['SEARCH'] as $arItem): ?>
<li><a href="<?= $arItem['URL']; ?>"><?= $arItem['NAME']; ?></a></li>
<? endforeach; ?>
</ul>
</div>
<? endif; ?>