Перейти к содержимому

Теги и облако тегов - включение, ввод, вывод, поиск по тегу

Заводим теги на сайте: включение у инфоблока, ввод значений, облако тегов на витрине и страница выдачи по выбранному тегу.

Что нужно знать заранее

Теги живут не сами по себе, а вместе с поисковым индексом сайта. Облако тегов и выдача по тегу строятся тем же модулем поиска, поэтому без индексации материалов теги на витрине не появятся.

Поле тегов включается в настройках инфоблока, а не в шаблоне компонента. Пока поле не включено, редактору его не видно, и заполнять теги попросту негде.

Размер тега в облаке означает его частоту, а цвет - свежесть использования. Крупный тег встречается у многих материалов, а бледный давно не использовался: это подсказка редакции, а не украшение витрины.

Шаги

  1. Включить поле тегов в настройках нужного инфоблока на закладке его полей.
  2. Заполнить теги у материалов вручную или дать посетителю отдельную форму ввода.
  3. Поставить облако тегов на витрину и связать его со страницей выдачи.
  4. Завести страницу выдачи по тегу на компоненте поиска с его специальным шаблоном.
  5. Проверить, что материалы с новыми тегами попадают в индекс после сохранения.

Решение

Включаем теги у инфоблока:

$iblock = new \CIBlock();
$iblock->Update($iblockId, ['TAGS' => 'новости, статьи']); // теги по умолчанию
// само поле тегов включают на закладке полей в настройках инфоблока

Поле тегов включают один раз при настройке инфоблока. Значения по умолчанию помогают редакции: новый материал получает базовый набор, а редактор дополняет его своими словами.

Даём посетителю форму ввода тегов:

$APPLICATION->IncludeComponent('bitrix:search.tags.input', '', [
'NAME' => 'TAGS', // имя поля в форме добавления материала
'VALUE' => $currentTags, // теги вводят через запятую с пробелом
'TAGS_SORT' => 'CNT', // подсказки сортируются по частоте
]);

Форма ввода подсказывает уже существующие теги. Это важнее, чем кажется: без подсказок появляются «телефоны», «телефон» и «сотовый телефон» как три разных тега на один и тот же смысл.

Выводим облако тегов:

$APPLICATION->IncludeComponent('bitrix:search.tags.cloud', '', [
'PAGE_ELEMENTS' => 30, // сколько тегов показываем
'PERIOD' => 30, // за какой период считаем частоту
'URL_SEARCH' => '/search/tags.php', // страница выдачи по тегу
'CACHE_TIME' => 3600,
]);

Облако тегов - это витрина поискового индекса. Оно показывает то, что реально проиндексировано, поэтому свежий материал появляется в облаке не сразу, а после попадания в индекс.

Заводим страницу выдачи по тегу:

// /search/tags.php - выдача материалов по выбранному тегу
$APPLICATION->IncludeComponent('bitrix:search.page', 'tags', [
'USE_TAGS_SEARCH' => 'Y',
'CHECK_DATES' => 'Y', // не показываем то, что уже неактуально по датам
]);

Выдача по тегу - обычная страница поиска со специальным шаблоном. Отдельного раздела под теги заводить не нужно, а адрес этой страницы указывают облаку и форме ввода.

Проверяем, что материал попал в индекс:

\Bitrix\Main\Loader::includeModule('search');
$res = \CSearch::Search(['TAGS' => 'новости'], [], ['ITEM_ID', 'TITLE']);
while ($row = $res->Fetch()) { printf("%s %s\n", $row['ITEM_ID'], $row['TITLE']); }
// пустой ответ означает, что дело в индексации, а не в самих тегах

Типичные проблемы

Поля тегов нет в форме редактирования материала.

Теги не включены в настройках инфоблока на закладке полей. Поле тегов включают отдельно для каждого инфоблока, где оно нужно.

Облако тегов пустое, хотя теги проставлены.

Материалы вообще не попали в поисковый индекс сайта. Облако строится по индексу, поэтому сначала проверяют индексацию нужного инфоблока.

Клик по тегу ведёт на пустую страницу.

Не задан адрес страницы выдачи либо на самой странице нет компонента поиска. Страницу заводят заранее и указывают её адрес в параметрах облака.

В облаке два похожих тега на один смысл.

Теги вводят без подсказок, каждый раз своими словами и в своём падеже. Форма ввода с автодополнением снимает большую часть таких смысловых дублей.

Свежие материалы не появляются в облаке.

Индексация идёт с задержкой либо переиндексация давно не запускалась вовсе. Проверяют настройки индексации и фоновые задания модуля поиска.

Частые вопросы

Чем теги отличаются от разделов?

Раздел один и задаёт структуру, тегов много и они пересекаются. Теги хороши для сквозных тем, которые не ложатся в дерево разделов.

Можно ли ограничить список тегов?

Штатно теги свободные, но подсказки в форме ввода сильно снижают разброс. Строгий список удобнее сделать свойством-списком инфоблока.

Работают ли теги без модуля поиска?

Нет, облако и выдача по тегу построены на поисковом индексе. Без индексации остаётся только своё поле и своя выборка по нему.

Как убрать редкие теги из облака?

Ограничить число выводимых тегов и период подсчёта частоты. Совсем ненужные теги чистят у материалов, а не прячут в шаблоне.

Полезны ли теги для поисковых систем?

Страницы тегов легко превращаются в дубли выдачи, поэтому их закрывают от индексации или оставляют только полезные. Пользы без содержательного текста на такой странице мало.

Смежное

Первоисточник