Блог/Поле link_attributes

Использование поля link_attributes в разработке

Автор: Кудашев Сергей

Мне часто не хватает стандартных полей, которые предоставляет ModX для документа. Особенно эта ситуация возникает, когда приходится делать сложную многоуровневую навигацию или навигацию с блоками разной фиксированной ширины. Что можно предпринять в этой ситуации?

Изначально я использовал решение связанное с применением phx, о применении которого в навигации напишу отдельно. Например, если нам надо применить к какому-то тегу CSS класс к документу с id 5 и его потомкам, то можно воспользоваться следующей конструкцией:

[*phx:if=`[*id*]`:is=`5`:or:if=`[*parent*]`:is=`5`:then=`class="about"`*]

Однако данная конструкция не самое хорошее решение, так как, во-первых, она работает только на один уровень, во-вторых надо всегда следить за параметрами class для других разделови. В итоге, подумав, что можно еще сделать, я обнаружил поле документа link_attributes. Согласно документации данное поле используется для того, чтобы задавать атрибуты ссылок, такие как rel= или target=. Однако, после некоторого изучения кода ModX я так и не нашел автоматического добавления данного поля, а посему его можно использовать в своих интересах.

Рассмотрим два варианта использования данного поля для сниппетов WayFinder и Ditto. Сначала назначим значение для поля:

Link Attributes

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

При использовании чанка в вызове WayFinder достаточно указать:

<li><a href="[+wf.link+]" [+wf.attributes+][+wf.classes+]>[+wf.linktext+]</a></li>

При использовании чанка в вызове Ditto достаточно указать:

<a href="[~[+id+]~]" [+link_attributes+]>[+pagetitle+]</a>

Вскоре напишу более подробно об использовании phx в навигации.

Комментарии (0)