Сейчас мы с вами реализуем облако тегов, с помощью компонента “tagLister”. Для этого нам необходимо скачать и установить два дополнения:
- getResources (на основе него работает поиск по тегам)
- tagLister (собственно, сам компонент для реализации тегов)
Когда мы инсталлируем компоненты, нам нужно создать дополнительное поле “tags”, где будут содержаться наши теги:
- Имя – tags
- Подпись – Теги
- Описание – (можно не запонять)
- Категория – элементы страниц
- Параметры ввода – авто-метка
- Параметры вывода – по умолчанию
- Доступно для шаблонов – Пост
Важно, чтобы TV-поле называлось именно “tags”, иначе придется переопределять предустановки компонента:

Теперь я более подробно расскажу про сам компонент. В составе него идет 3 сниппета:
- getResourcesTag – данный сниппет ищет статьи, помеченные определенным тегом. Работает на основе getResources, следовательно, наследует его параметры.
- tagLister – сниппет для вывода облака тегов.
- toLinks – сниппет, который преобразовывает теги статьи в ссылки на страницы, на которых у нас будет подборка статей, помеченных определенным тегом.
Чтобы приступить, нам необходимо создать шаблон “Поиск по тегам” со следующим кодом:
<html lang="ru">
<head>
[[$meta]]
</head>
<body>
<div class="wrapper">
[[$headerInner]]
<main id="blog" class="inner-bottom-xs">
<div class="container">
<div class="row">
<div class="col-md-9">
<div class="posts sidemeta">
[[!getResourcesTag?
&element=`pdoResources`
&elementClass=`modSnippet`
&grSnippet=`pdoPage`
&tpl=`postTpl`
&hideContainers=`1`
&pageVarKey=`page`
&parents=`2`
&includeTVs=`image,tags`
&includeContent=`1`
]]
</div>
<hr/>
[[!+page.nav]]
</div>
<div class="col-md-3">
[[$blogSidebar]]
</div>
</div>
</div>
</main>
[[$footer]]
</div>
[[$scripts]]
</body>
</html>
В параметре «tplPageWrapper» нужно указать чанк, найдете его на тестовом сайте. Я использовал вместо getResources – pdoResources, чтобы выборка происходила быстрее. В видео я объясню, что значит каждый из параметров и вы сможете посмотреть это в официальной документации.
Итак, у нас готов шаблон. Теперь в корне сайта нам необходимо создать ресурс – “Поиск по тегам”:

На данном ресурсе у на будут выводиться релевантные выбранному тегу статьи. Отлично!
Теперь вспомните: где у нас выводятся теги? Правильно! В шаблоне “Пост” и в чанке “postTpl”. Сейчас мы с вами выведем теги для статьи, но прежде нужно добавить в нашу тестовую статью какие-нибудь “тестовые теги” (указываем через запятую, сохраняем):

В шаблоне теги у нас выводятся в двух местах, причем их стиль отображения отличается. Если в первом случае, нам достаточно просто вызвать сниппет toLinks (шаблон ссылка – по умолчанию), то во втором случае, нужно создать чанк “tagRowTpl”:
<span><a href="[[+url]]" class="[[+cls]]">[[+item]]</a></span>
И в шаблоне нужно прописать в следующих местах вызовы toLinks:

Вызов первый:
[[!tolinks?
&items=`[[*tags]]`
&target=`5`
]]
Вызов второй:
[[!tolinks?
&items=`[[*tags]]`
&tpl=`tagRowTpl`
&target=`5`
]]
Заметили параметр target? Он как раз ведет на тот ресурс, который мы создали. Теперь нам нужно сделать аналогичный вызов в чанке postTpl:

Помните разницу? Здесь мы вызываем TV с префиксом и знаком “+”. Также не забудьте включить TV-параметр в выборку в шаблоне “Блог”:

Ну, что? Проверим? Покликайте по тегам на странице статьи или блога. Работает! Можете создать другую статью и сделать отличные от созданной раннее тегами.
Теперь выведем облако тегов в сайдбаре. Я не буду управлять их размером, выведу 15 популярных:

Вызов tagLister:
[[!tagLister?
&tv=`tags`
&target=`5`
&limit=`15`
&tpl=`tagListerTpl`
&allTpl=`tagListerTpl`
]]
Код чанка “tagListerTpl”:
<a href="[[~[[+target]]]]?[[+tagVar]]=[[+tag]]">[[+tag]]</a>
Все! У нас получилось! Теги реализованы. Согласитесь, что все очень быстро и просто!
Array ( [page] => 1 [pageNo] => 1 [href] => tegi?tag=%D0%9F%D0%B0%D0%B2%D0%BB%D0%BE%D0%B4%D0%B0%D1%80&key=tags ) Array ( [page] => 2 [pageNo] => 2 [href] => tegi?page=2&tag=%D0%9F%D0%B0%D0%B2%D0%BB%D0%BE%D0%B4%D0%B0%D1%80&key=tags ) Array ( [page] => 3 [pageNo] => 3 [href] => tegi?page=3&tag=%D0%9F%D0%B0%D0%B2%D0%BB%D0%BE%D0%B4%D0%B0%D1%80&key=tags ) Array ( [page] => 4 [pageNo] => 4 [href] => tegi?page=4&tag=%D0%9F%D0%B0%D0%B2%D0%BB%D0%BE%D0%B4%D0%B0%D1%80&key=tags ) Array ( [page] => 5 [pageNo] => 5 [href] => tegi?page=5&tag=%D0%9F%D0%B0%D0%B2%D0%BB%D0%BE%D0%B4%D0%B0%D1%80&key=tags )Что делать? Кто сталкивался?[[!pdoResources? &parents=`0` &pageVarKey=`0` &includeTVs=`image,tags` &processTVs=`tags` &includeContent=`1` &tpl=`articleTpl` &limit=`6` &where=`{"tags:LIKE":"%[[!pdoResources? &name=`tag`]]%"}` &sortby=`{"publishedon":"DeSC"}` &toPlaceholder=`results` &showHidden=`1` &hideContainers=`true` ]] [[!+results]] [[!+page.nav]]сделал все по инструкции. Выводятся ВСЕ статьи, как ни бился. Что не так?