Поиск по тегам в MODX Revolution
25/03/2016
Просмотры: 4750

Теги modx revolution

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

Для организации поиска по ключевым словам идеально подходит приложение Simplesearch, которое мы рассмотрим в самое ближайшее время. А для группировки всех публикаций по тематике принято использовать теги - слова и словосочетания, которые явно характеризуют тематику публикации.

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

Теги modx revolution

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

taglister MODX revo

Для реализации необходимого нам функционала мы будем использовать готовое приложение из репозитория - taglister.

Taglister MODX Revo

После установки приложения taglister можно переходить к настройкам отображения тегов на сайте. Давайте рассмотрим основные типы отображения тегов, которые могут нам потребоваться для удобной навигации по сайту и организации сортировки.

  • Вывод списка тегов под содержимым публикации
  • Организация поиска по тегам (при нажатии по тегу переход на страницу с выводом всех публикаций с таким же тегом)
  • Вывод облака тегов в категориях

Также теги можно использовать для продвинутого поиска, но этот вариант мы не будем рассматривать сегодня, но в следующих уроках мы затронем данную возможность и реализуем это на практике.

Можно приступать к реализации поставленной цели. Учитывая тот факт, что на нашем сайте уже запущен блог, я подразумеваю, что у вас установлен пакет приложения pdoResources.

Вывод списка тегов на странице публикации новости

Для начала необходимо создать новый TV параметр с именем tags, в настройках ввода выбираем АВТОМЕТКА, а также выбираем шаблон, который используется для вывода статей нашего блога.

tv параметр MODX для тегов

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

Прописываем код вывода списка тегов. Необходимо уточнить как у вас организован вывод тегов-в шаблоне или через чанк, в зависимости от этого будет производиться вызов tv через * или +. В моем случае вывод списка тегов будет напрямую в шаблоне, поэтому я буду размещать код в самом шаблоне и использовать *.

Создадим новый ресурс с именем РЕЗУЛЬТАТ ПОИСКА ПО ТЕГАМ и присвоим ему шаблон как для вывода анонсов новостей блога. Запомним идентификатор (номер) созданного нами ресурса. В моем случае идентификатор ресурса будет (17).

В моем шаблоне предусмотрено место для вывода списка тегов и выглядит это таким образом:

1
2
3
4
<div class="tags-cats">
	<span><i class="fa fa-tags"></i> ТЕГИ:</span>
	<a href="#">тег1</a>,<a href="#">тег2</a>,<a href="#">тег3</a>
</div>

 Вставим конструкцию вызова списка тегов, заменив ссылки статического кода.

1
2
3
4
5
6
<div class="tags-cats">
	<span><i class="fa fa-tags"></i> ТЕГИ:</span>
 
	[ [!tolinks? &items=`[[*tags]]` &target=`17` &inputDelim=`,` &outputDelim=` `&tpl=`TagsList`]]
 
</div>

 Данная конструкция выполняет сразу несколько функций. Во первых происходит выборка данных, прописанных в tv параметре tags для текущего ресурса, а во вторых формируется список активных ссылок для перехода на страницу результатов поиска, на которой будет произведена выборка всех ресурсов с таким же тегом.

Теперь нам необходимо создать чанк для вывода ссылки для каждого тега. Название чанка произвольное, в моем случае это TagsList.

Содержимое данного чанка: 

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

Ресурс отображения результатов поиска по тегам MODX Revo

В содержимом ресурса необходимо вставить код выборки, по принципу формирования списка анонсов публикаций.

Код конструкции:

1
2
3
4
5
6
7
8
9
10
11
12
[ [!getResourcesTag?
    &parents=`2`
    &grSnippet=`pdoPage` 
    &element=`pdoResources`
    &tpl=`blogPost`
    &hideContainers=`1`
    &includeTVs=`blog-photo,category,HitsPage`
    &includeContent=`1`
    &limit=`12` 
    &sortby=`pagetitle`
    &sortdir=`ASC`
]]

Так как я не использую getResources и getPage, то я указал необходимоть использования обработчиков pdo. Параметр parents получает значение родителя или родителей, чьи потомки будут учавствовать в сортировке. В моем случае новостной блог находится в папке с идентификатором 2. Часто категории разбиты по отдельным родителям, в таком случае необходимо указать все идентификаторы родителей через запятую.

В качестве вывода результатов выборки необходимо указать чанк, который будет формировать результаты выборки. В моем случае это чанк с именем blogPost, который я использую для вывода анонсов публикаций на странице категорий. В нем ничего изменять не требуется.

Ну и дальше стандартные параметры выборки, которые выставляем в зависимости от ваших требований или предпочтений: количество результатов на странице, какие tv параметры необходимо отображать в результатах, тип сортировки и т.д.

Ниже устанавливаем код пагинации страниц:

1
[ [!+page.nav]] 

Ну вроде все. Теперь можно проверить проделанную нами работу в действии. Для этого открываем на редактирование наши публикации, прописываем теги и смотрим результат.

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

Вывод облака тегов taglister MODX Revo

Для полноты картины функциональности нашего блога на MODX необходимо вывести облако тегов в сайдбаре блога, что позволит повысить юзабилити нашего новостного сайта. Для этого определяемся с местом вывода облака тегов и прописываем следующую конструкцию:

1
2
3
4
5
6
7
[ [!tagLister? 
&tv=`tags` 
&target=`17`
&parents=`2` 
&limit=`20` 
&tpl=`tagsCloud`
]]

Структура конструкции напоминает оформление выьорки на странице результатов поиска. Мы также прописываем родителя, в моем случае это ресурс с идентификатором (2), указываем идентификатор ресурса, на который будет осуществляться переход при клике по тегу из облака (все тот же ресурс вывода результатов поиска по тегам).

Также необходимо определиться с максимальным количеством тегов в облаке, в моем случае это 20 тегов со всех публикаций, которые находятся в родителе с новостями. Для оформления самого облака тегов необходимо указать и создать новый чанк с именем tagsCloud

Чанк вывода облака тегов MODX

1
<span class="[ [+cls]]"><a href="[ [+url]]">[ [+tag]]</a></span>

Все. Можем проверять результат работы. если все сделано правильно, то мы увидем генерацию тегов в нашем облаке и при нажатии на любой тег будет произведен переход на страницу результата поиска по тегам, на которой отобразиться список всех публикаций с данным тегом.

Надеюсь урок будет полезен при разработке ваших проектов.

P.S.: Отличная возможность использования списка тегов для генерации ключевых слов для публикаций, прописываем выборку списка тегов параметра в шапке шаблона публикации через код:

1
2
3
4
5
6
7
<meta name="Keywords" content="
[ [!tolinks? 
&items=`[ [*tags]]` 
&target=`17` 
&tpl=`KeyList`
&inputDelim=`,`
&outputDelim=` `
]] ">

Чанк KeyList копируем с чанка вывода ссылок для тегов, только убираем a href.

Удачи в сайтостроении!