tagLister ЧПУ (Friendly URL`s)

Эта небольшая заметка расскажет о том, как подружить tagLister и Friendy URL`s в MODX Revolution.

tagLister - отлично дополнение для MODX, которое позволяет просто работать с системой тегов на вашем сайте, но и оно не без изъянов.

Как известно, MODX Revolution отлично работает с "красивыми" адресами страниц (Friendly URL), генерируя подобные адреса страниц /page/anotherpage/.

Но tagLister выбиваются из общего ряда, так как он формируют url вида /tags/?tag=мой тег&key=blogTags

Попробуем это исправить.

Задача

Заменить адреса страниц с тегами вида

 /tags/?tag=мой тег&key=blogTags

на

/tags/мой тег/

Решение поставленной задачи разбивается на 2 этапа:

  • Сгенерировать верные URL
  • Добится, что бы открывалась нужная страница по этим адресам.

Этап 1. Генерируем красивые URL в tagLister

Компонент tagLister содержит 3 сниппета: tagLister (облако тегов), toLinks (список тегов документа), getResourcesTag (выборка документов, имеющих заданный тег).

Чтобы сгенерировать красивые URL в сниппетах tagLister и toLink, необходимо переопределить стандартный шаблон, задаваемый параметром tpl.

Для tagLister необходимо создать чанк с кодом, приведенным ниже, и указать этот чанк в параметре tpl в вызове сниппета:

<li>
 <a href="[[~[[+target]]]][[+tag]]/">[[+tag]]</a> ([[+count]])
</li>

Для toLinks выполняется тоже действие, только код чанка другой:

<a href="[[~95]][[+item]]/" class="[[+cls]]">[[+item]]</a>

Обратите внимание, что toLinks не устанавливает плейсхолдет target, поэтому нам приходится напрямую указать id ресурса, на котором будут выводится документы с нашим тегом, в примере выше это 95.

После внесенных изменений вы должны увидеть, что и tagLister и toLink генерируют уже нужные нам адреса страниц.

Этап 2. Изменения в .htaccess

Теперь необходимо внести правки в файл .htaccess, что бы сгенерированные адреса заработали как и ранее.

Добавьте эту строку

RewriteRule ^tags/([^/]*)/$ /tags/?tag=$1&key=blogTags [L]

в файл .htaccess вашего сайта сразу после строк

RewriteEngine On
RewriteBase /

Это правило преобразует адреса страниц к первоначальному виду, а посетитель сайта этого и не увидит.

Дополнительно

Для генерации правил для .htaccess файла удобно пользоваться этим сервисом: http://www.generateit.net/mod-rewrite/

Он позволяет, используя понятный интерфейс, сгенерировать RewriteRule для вашего сайта и вашей ситуации.