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 biper 10 июля 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]]
    сделал все по инструкции. Выводятся ВСЕ статьи, как ни бился. Что не так?
    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,5761 s | 10 mb.
                      На каком уровне Вы играете в шахматы?
                      О П Р О С
                      Home Question Top