При создании блога потребовалось вывести теги на детальной странице записей. Базовыми средствами почему-то не получилось и решил сделать небольшой «костыль».
Первым делом в разделе SEO на странице редактирования записи в самом низу находим строку для тегов и заполняем в нее теги через запятую. Если по какой-то причине у вас нет строки для тегов можете просто добавить дополнительное свойство и применить по предназначению.
Далее в параметрах вывода компонента находим (если нет, то добавляем) параметр «DETAIL_FIELD_CODE».
"DETAIL_FIELD_CODE" => array(
0 => "TAGS",
),
Теперь в $arResult['FIELDS']['TAGS'] есть теги, только они представлены в виде строки, а нам надо вывести их как отдельные ссылки. Соответственно берем $arResult['FIELDS']['TAGS'] и с помощью explode() делим строку по запятым на массив.
$tags = explode(',', $arResult['FIELDS']['TAGS'], PHP_INT_MAX);
Также перед выводом, элементы надо избавить от пробелов в начале и конце. Для этого их прогоняем через trim().
<?=trim($tag);?>
Весь код выглядит следующим образом
<!-- ВЫВОД ТЕГОВ -->
<!-- Проверяем есть ли вообще теги -->
<? if ($arResult['FIELDS']['TAGS']) :?>
<div class="blog-detail-tag">
<div class="blog-detail-tag__body">
<div class="blog-detail-tag__title">
Теги:
</div>
<div class="blog-detail-tag__tags">
<?
// так как теги даны как строка, с помощью explode() делим строку на слова и в виде массива присваиваем переменной
$tags = explode(',', $arResult['FIELDS']['TAGS'], PHP_INT_MAX);
// запускаем цикл на вывод массива по одному элементу
foreach ($tags as $tag) : ?>
<!-- создаем ссылку для перехода в поиск -->
<!-- теги перед выводом пропускаем через trim(), чтобы убрать пробелы -->
<a class="blog-detail-tag__item link" href="/blog/search/?q=<?=trim($tag);?>"><strong><?=trim($tag);?></strong></a>
<? endforeach; ?>
</div>
</div>
</div>
<? endif; ?>
Описанный метод вполне применим при необходимости вывода тегов на странице списка новостей (записей).
Комментарии