У меня есть виджет в сайдбаре, который я хочу показывать на всех страницах, кроме дочерних контейнера с id, например, 418 (при этом виджет должен быть виден для 418). В пакете IF
ничего подобного не нашел.
Как скрыть блок от дочерних элементов ресурса в MODX Revo?
Ответы (1)
Первым и несколько примитивным решением может быть просто создание нового шаблона путем небольшого изменения текущего (удаление виджета), а затем установка вновь созданного шаблона для страниц, на которых виджет не должен отображаться.
Второй подход, о котором я подумал, — это получить каким-то образом родительский идентификатор ресурса, а затем использовать его в "прокси" блоке (вместо прямого вызова блока виджета) внутри вашего текущего шаблона следующим образом:
[[!If?
&subject=`[[!getParentId]]`
&operator=`EQ`
&operand=`418`
&then=``
&else=`[[$yourWidget]]`
]]
Должны быть некоторые дополнения с необходимой функциональностью для получения идентификатора родителя, или вы всегда можете написать свой собственный небольшой фрагмент «getParentId» на основе этого:
return $modx->getParentIds( $modx->resource->id );
person
curveball
schedule
28.03.2017
Родительский идентификатор можно получить с помощью
[[*parent]]
. Я думал об этом подходе, но остановился на реализации нескольких значений для ключа &operand
. Нашел ответ здесь stackoverflow.com/questions/35101931/
- person Azamat Safarov; 29.03.2017
ооо... ты прав, я просто пропустил
[[*parent]]
. МОДХ классный!)
- person curveball; 29.03.2017
&parents="1,2,3,-418"
в вызове сниппета (где 1,2 и 3 представляют идентификаторы других ресурсов). - person MeltingDog   schedule 28.03.2017