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 ресурса, в который будет осуществлен вывод статей по конкретному тегу. То есть при нажатии на тег (ключевое слово), будет осуществлен вывод всех статей связанных с этим тегом в ресурс с этим 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
Комментарии — 14
  1. avatar Егор 27 января 2015, 11:53 #
    Спасибо за статью. Все получилось. Но, хочу немного поправить. Если теги выводятся в чанке, то запись должна быть следующей
    [[!tolinks? &items=`[[+tv.tags]]` &target=`19` &tpl=`linkTpl`]]
    1. 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
      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 Lola 16 июня 2016, 00:11 #
              Когда ключевых слов очень много, они все выводятся на вкладке дополнительные поля. Как можно их убрать, чтобы не мешали?
              1. avatar Simkin Andrew 16 июня 2016, 09:39 #
                Параметры Ввода tv поля изменить, отвечающего за теги. На обычный текст.
                1. avatar Lola 16 июня 2016, 16:11 #
                  Спасибо!
              © REALADMIN.RU   2016 г.
              Страница сгенерирована: 0,1016 s | 10 mb.
              На каком уровне Вы играете в шахматы?
              О П Р О С
              Home Question Top