Использование поля 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. Сначала назначим значение для поля:
, и назначать данное поле к каждому документу потомку. После чего мы можем полноценно пользоваться данным полем.
При использовании чанка в вызове WayFinder достаточно указать:
<li><a href="[+wf.link+]" [+wf.attributes+][+wf.classes+]>[+wf.linktext+]</a></li>
При использовании чанка в вызове Ditto достаточно указать:
<a href="[~[+id+]~]" [+link_attributes+]>[+pagetitle+]</a>
Вскоре напишу более подробно об использовании phx в навигации.
Комментарии (0)