RealAdmin.ru

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

MODX
Категория: Сайтострой
26 май 2013 г. в 11:39

Опишу как организовать вывод ключевых слов к статьям, облако тегов и вывод статей по ключевому слову в 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» ID ресурса для вывода статей по ключевому слову. Параметр «tpl» указывает на чанк, в котором хранится оформление облака тегов. Как оформить облако тегов хорошо написано на сайте freelgraf.in.ua

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

Теги:
Посмотрите похожее — 6
Комментарии —
  1. avatar Илья 05 января 2018, 13:47 #
    Здравствуйте. Теги выводятся нормально. Но вот возник вопрос — в ресурсе «Вывод результатов по тегам» можно ли сделать описание тега?

    То есть при нажатии на тег -пользователь переходит на вывод результатов с прикрепленными статьями. А сверху над результатами — картинка и описание. Такой глоссарий как бы.
    1. avatar Simkin Andrew 05 января 2018, 15:12 #
      Наверно, можно поставить дополнение getUrlParam и проверять значение тега из GET параметра:
      [[!getUrlParam:is=`тег 1`:then=`описание первого тега`? &name=`tag`]]
      [[!getUrlParam:is=`тег 2`:then=`описание второго тега`? &name=`tag`]]
      [[!getUrlParam:is=`тег 3`:then=`описание третьего тега`? &name=`tag`]]
    2. avatar Ваня 17 февраля 2017, 10:39 #
      Согласно инструкции вывел у статьи 2 тэга. И при нажатии на 1 и 2 тэг открывается одна страница (так как target только 1 можно указать). Как вывести 2 или 3 тэга к статье, чтобы они вели на свои страницы с выводом списка статей? Спасибо
      1. avatar Simkin Andrew 26 февраля 2017, 22:11 #
        Думаю уже разобрался сам. Я болел, поэтому не мог ответить. Вроде всё правильно в статье указано.
      2. avatar Lola 16 июня 2016, 00:11 #
        Когда ключевых слов очень много, они все выводятся на вкладке дополнительные поля. Как можно их убрать, чтобы не мешали?
        1. avatar Simkin Andrew 16 июня 2016, 09:39 #
          Параметры Ввода tv поля изменить, отвечающего за теги. На обычный текст.
          1. avatar Lola 16 июня 2016, 16:11 #
            Спасибо!
        2. avatar Государь 20 июня 2015, 14:38 #
          Привет! Все работает, но выводится запятая. Как ее убрать?
          1. avatar Simkin Andrew 20 июня 2015, 15:14 #
            Чанк для вывода, наверно, надо указать. Содержимое чанка не подскажу, не помню в каком сниппете теги с запятой могут выводиться.
            1. avatar Государь 20 июня 2015, 15:17 #
              Вы, вероятно, не так поняли.
              выводятся теги через запятую.
              вот так:
              Теги: росгосстрах, каско, осаго
              почему цепляется запятая?
              1. avatar Stan 20 сентября 2015, 19:50(был изменён) #
                Есть про разделитель информация в официальной документации, вникайте (&tvDelimiter=` `)
                1. avatar Simkin Andrew 20 сентября 2015, 20:52 #
                  Может как подсказали, но я не указывал этот параметр.
              2. avatar Oneman 01 января 2016, 15:55(был изменён) #
                Сам столкнулся с проблемой, решение крылось тут: rtfm.modx.com/extras/revo/taglister/taglister.tolinks

                Когда вызывате tolinks, вызывайте так:
                [[!tolinks? &items=`[[+tv.tags]]` &target=`19`  &inputDelim=`,` &outputDelim=` ` &tpl=`linkTpl`]]
              3. avatar Spirit_Ninja 26 мая 2015, 10:51(был изменён) #
                Спасибо за хорошую понятную статью. Есть просьба: как вывести теги через pdoResources?
                В другой статье упоминается про
                &where=`{"tags:LIKE":"%[[!getUrlParam? &name=`tag`]]%"}`
                А как вывод написать целиком?
                1. avatar Simkin Andrew 26 мая 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. avatar Stan 20 сентября 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. avatar Simkin Andrew 20 сентября 2015, 21:23 #
                      +1
                      1. avatar Ol 12 сентября 2017, 18:40 #
                        Просто выводит слово Array. Куда копать?
                        1. avatar Simkin Andrew 13 сентября 2017, 13:42 #
                          Обычно массив выводит когда не указаны шаблоны для вывода. Предположу, что у вас не создан чанк — articleTpl.
                  2. avatar Егор 27 января 2015, 11:53 #
                    Спасибо за статью. Все получилось. Но, хочу немного поправить. Если теги выводятся в чанке, то запись должна быть следующей
                    [[!tolinks? &items=`[[+tv.tags]]` &target=`19` &tpl=`linkTpl`]]
                    © REALADMIN.RU   2018 г.
                    Страница сгенерирована: 0,1125 s | 10 mb.
                    На каком уровне Вы играете в шахматы?
                    О П Р О С
                    Home Question Top