Ключевые слова в MODX Revolution через tagLister

Ключевые слова в MODX Revolution через tagLister
Комментарии: 22

Опишу как организовать вывод ключевых слов к статьям, облако тегов и вывод статей по ключевому слову в MODX Revolution. Делал это стандартными методами, которыми пользуется большинство разработчиков на MODX. Как всё это выглядит на практике можете видеть на этом сайте.

Прежде чем начать одно примечание: я использую в разных местах статьи такие понятия как «ключевое слово» и «тег». Чтобы не вводить в заблуждение, хочу сказать что под этими понятиями я понимаю одно и то же, просто спонтанно пишу где-то одно, а где-то другое. Поехали!

[ 1 ] Скачайте и установите пакет tagLister.

[ 2 ] Создайте новый TV параметр (дополнительное поле). Назовите его tags (можно и по другому). В параметрах ввода выставьте Авто-метка, в доступных шаблонах отметьте шаблон, который у Вас используется для вывода статей или новостей.

Создание нового TV параметра

После этого у ресурсов со статьями (новостями) появится вкладка — «Дополнительные поля». На ней будет созданное поле — tags. В него для каждой статьи впишите через запятую ключевые слова.

Заполняем дополнительное поле - tags

[ 3 ] Теперь в чанке который отвечает за вывод статьи добавляем сниппет для вывода ключевых слов:

Ключевые слова: [[!tolinks? &items=`[[*tags]]` &target=`19` &tpl=`linkTpl`]]

Разберём параметры:

&items=`[[*tags]]` — указываем как называется TV параметр (дополнительное поле) в котором хранятся ключеыве слова;

&target=`19` — странный параметр 19 на самом деле является ID ресурса в который будет осуществлен вывод статей по конкретному тегу. То есть, при нажатии на тег (ключевое слово), будет осуществлен вывод всех статей связанных с этим тегом в ресурс с этим идентификатором. Об этом ниже в пункте 5.

&tpl=`linkTpl` — чанк в котором прописано оформление вывода тегов. Его можно не указывать — теги все равно будут выводится, но без какого-то оформления. У меня в чанке «linkTpl» следующее:

<a href="[[++site_url]][[+url]]" class="[[+cls]]"> [[+item]]</a>

[ 4 ] Вывод ключевых слов в статье организовали, теперь делаем чтобы при нажатии на ключевое слово показывались все статьи в которых этот тег присутствует. Для этого создаём шаблон с названием tags. В этом шаблоне в месте где выводится контент я вызывал сниппет:

[[!getResourcesTag?
    &parents=`2`
    &tpl=`articleTpl`
    &limit=`50`
    &includeTVs=`1`
]]

&parents=`2` — указывает ID родительского ресурса наших статей. У меня им является ресурс Articles (2) в котором и размещены все мои статьи.

&tpl=`articleTpl` — указываем чанк с выводом информации о статье. В этом чанке выводится название статьи, краткое содержание, автор и.т.п. Я не создавал этот чанк специально для вывода тегов, он у меня уже был и использовался для вывода ленты статей на главной странице. Полностью его содержимое приводить не буду, но чтобы было понятнее укажу основное его содержимое:

<a href="[[++site_url]][[~[[+id]]]]"><h1>[[+pagetitle]]</h1></a>

&includeTVs=`1` — включаем в плейсхолдер TV параметры если они используются в выводе.

Остальные параметры описывать не буду, думаю понятно.

[ 5 ] Теперь создадим новый ресурс «Вывод результатов по тегам». Присвойте этому ресурсу шаблон, который мы создали на предыдущем шаге. Так же поставьте галочку — «не показывать в меню» и «опубликовать». Сохраните его и посмотрите ID этого ресурса (указывается в скобках рядом с названием ресурса). У меня ID был 19 и именно его я указывал в сниппете (пункт «[ 3 ]»), который отвечает за вывод ключевых слов.

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

[ 6 ] Если на сайте используются теги к статьям/новостям, то как правило, есть и облако тегов. В месте, где вы хотите его вывести укажите сниппет:

[[!tagLister? &tv=`tags` &target=`19`&parents=`2` &limit=`25` &tpl=`tag_user`]]

Если проделали все предыдущие шаги, то разобраться в параметрах не составит труда. Не забудьте поменять в «target» идентификатор ресурса для вывода статей по ключевому слову. Параметр «tpl» указывает на чанк, в котором хранится оформление облака тегов.

Темы:
MODX
Ещё интересное — 6
Комментарии —
  1. Егор
    Егор27 января 2015, 11:53#
    Спасибо за статью. Все получилось. Но, хочу немного поправить. Если теги выводятся в чанке, то запись должна быть следующей
    [[!tolinks? &items=`[[+tv.tags]]` &target=`19` &tpl=`linkTpl`]]
    1. Spirit_Ninja
      Spirit_Ninja26 мая 2015, 10:51(был изменён)#
      Спасибо за хорошую понятную статью. Есть просьба: как вывести теги через pdoResources?
      В другой статье упоминается про
      &where=`{"tags:LIKE":"%[[!getUrlParam? &name=`tag`]]%"}`
      А как вывод написать целиком?
      1. Andy Si26 мая 2015, 12:09(был изменён)#
        На странице для вывода статей по тегам я использую такую конструкцию. Правда, если в тегах есть повторяющиеся слова то стоит переработать условие where. У меня таких нет, поэтому так:
        [[!pdoPage? 
        	&element=`pdoResources`
        	&parents=`36,37` 
        	&depth=`1` 
        	&limit=`6`  
        	&includeTVs=`img-news`
        	&includeContent=`0`
        	&tpl=`articleTpl`
        	&tplWrapper=`@INLINE <h1>Результаты по тегу: [[return-tag]] ([[+page.total]])</h1> [[+output]]`
        	&where=`{"tags:LIKE":"%[[return-tag]]%"}`
        	&tplPageWrapper=`@INLINE [[+prev]][[+first]][[+pages]][[+last]][[+next]]`
        	&tplPage=`tplPageResultTag`
        ]]
        
        <div class="wp-pagenavi">
        	[[!+page.nav]]
        </div>
        1. Stan
          Stan20 сентября 2015, 21:13(был изменён)#
          А лучше так:
          [[!getResourcesTag? 
            &includeTVs=`tags,image`
            &processTVs=`1`
            &grSnippet=`pdoPage` 
            &element=`pdoResources`
            &parents=`[[*id]]`
            &tagKey=`category`
            &toPlaceholder=`results` 
            &tpl=`articleTpl` 
          ]]
          [[!+results]]
          [[!+page.nav]]
          1. Andy Si20 сентября 2015, 21:23#
            +1
            1. Ol
              Ol12 сентября 2017, 18:40#
              Просто выводит слово Array. Куда копать?
              1. Andy Si13 сентября 2017, 13:42#
                Обычно массив выводит когда не указаны шаблоны для вывода. Предположу, что у вас не создан чанк — articleTpl.
              2. fjfira92
                fjfira9223 октября 2023, 10:31#
                Спасибо работает
          2. Государь
            Государь20 июня 2015, 14:38#
            Привет! Все работает, но выводится запятая. Как ее убрать?
            1. Andy Si20 июня 2015, 15:14#
              Чанк для вывода, наверно, надо указать. Содержимое чанка не подскажу, не помню в каком сниппете теги с запятой могут выводиться.
              1. Государь
                Государь20 июня 2015, 15:17#
                Вы, вероятно, не так поняли.
                выводятся теги через запятую.
                вот так:
                Теги: росгосстрах, каско, осаго
                почему цепляется запятая?
                1. Stan
                  Stan20 сентября 2015, 19:50(был изменён)#
                  Есть про разделитель информация в официальной документации, вникайте (&tvDelimiter=` `)
                  1. Andy Si20 сентября 2015, 20:52#
                    Может как подсказали, но я не указывал этот параметр.
                2. Oneman
                  Oneman01 января 2016, 15:55(был изменён)#
                  Сам столкнулся с проблемой, решение крылось тут: rtfm.modx.com/extras/revo/taglister/taglister.tolinks

                  Когда вызывате tolinks, вызывайте так:
                  [[!tolinks? &items=`[[+tv.tags]]` &target=`19`  &inputDelim=`,` &outputDelim=` ` &tpl=`linkTpl`]]
                3. Lola
                  Lola16 июня 2016, 00:11#
                  Когда ключевых слов очень много, они все выводятся на вкладке дополнительные поля. Как можно их убрать, чтобы не мешали?
                  1. Andy Si16 июня 2016, 09:39#
                    Параметры Ввода tv поля изменить, отвечающего за теги. На обычный текст.
                    1. Lola
                      Lola16 июня 2016, 16:11#
                      Спасибо!
                  2. Ваня
                    Ваня17 февраля 2017, 10:39#
                    Согласно инструкции вывел у статьи 2 тэга. И при нажатии на 1 и 2 тэг открывается одна страница (так как target только 1 можно указать). Как вывести 2 или 3 тэга к статье, чтобы они вели на свои страницы с выводом списка статей? Спасибо
                    1. Andy Si26 февраля 2017, 22:11#
                      Думаю уже разобрался сам. Я болел, поэтому не мог ответить. Вроде всё правильно в статье указано.
                    2. Илья
                      Илья05 января 2018, 13:47#
                      Здравствуйте. Теги выводятся нормально. Но вот возник вопрос — в ресурсе «Вывод результатов по тегам» можно ли сделать описание тега?

                      То есть при нажатии на тег -пользователь переходит на вывод результатов с прикрепленными статьями. А сверху над результатами — картинка и описание. Такой глоссарий как бы.
                      1. Andy Si05 января 2018, 15:12#
                        Наверно, можно поставить дополнение getUrlParam и проверять значение тега из GET параметра:
                        [[!getUrlParam:is=`тег 1`:then=`описание первого тега`? &name=`tag`]]
                        [[!getUrlParam:is=`тег 2`:then=`описание второго тега`? &name=`tag`]]
                        [[!getUrlParam:is=`тег 3`:then=`описание третьего тега`? &name=`tag`]]
                      2. biper
                        biper10 июля 2018, 07:03#
                        На странице http://fenix.petrovich-design.ru/rezultat-po-zaprosu.html вывожу выборку статей по запросу (по тегам)
                        [[!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]]
                        сделал все по инструкции. Выводятся ВСЕ статьи, как ни бился. Что не так?
                        © REALADMIN.RU   2024 г.
                        Страница сгенерирована: 0,1911 s | 6 mb.
                        На каком уровне Вы играете в шахматы?
                        OPROS