В MODX 2.3.x изменена логика фильтра вывода toPlaceholder
Возможно, это незначительное изменение, но у некоторых разработчиков может что-то поломаться, как у меня)
Так вот, раньше такой код
выводил
То есть, модификатор toPlaceholder не только устанавливал нужный плейсхолдер, но и выводил результат. В официальной документации даже осталось пояснение по этому ПОВОДУ:
В версии 2.3.0 и старше добавлена строчка, очищающая $output при использовании этого модификатора, так что теперь код
сам по себе не выводит НИЧЕГО. Будьте внимательны и проверьте, не сломалось ли у вас ничего после обновления.
Чтобы исправить, достаточно добавить вызов нужного плейсхолдера сразу после кода с использованием такого модификатора.
UPD. Кстати, это коснулось не только модификатора toPlaceholder, но и некоторых других: cssToHead, htmlToHead, htmlToBottom, jsToHead, jsToBottom
Так вот, раньше такой код
[[!snippet:toPlaceholder=`placeholder`]]
[[+placeholder]]
выводил
result
result
То есть, модификатор toPlaceholder не только устанавливал нужный плейсхолдер, но и выводил результат. В официальной документации даже осталось пояснение по этому ПОВОДУ:
Puts the input value into the passed placeholder. Does not prevent the output of the TV value, so add [[*someTV:toPlaceholder=`placeholder`:notempty=``]] if you don't want to output the value of the TV itself.
В версии 2.3.0 и старше добавлена строчка, очищающая $output при использовании этого модификатора, так что теперь код
[[!snippet:toPlaceholder=`placeholder`]]
сам по себе не выводит НИЧЕГО. Будьте внимательны и проверьте, не сломалось ли у вас ничего после обновления.
Чтобы исправить, достаточно добавить вызов нужного плейсхолдера сразу после кода с использованием такого модификатора.
UPD. Кстати, это коснулось не только модификатора toPlaceholder, но и некоторых других: cssToHead, htmlToHead, htmlToBottom, jsToHead, jsToBottom
Комментарии: 2
Спасибо, я даже не знал что такой модификатор существует))
Раньше, чтобы засунуть результат сниппета в плейсхолдер, без вывода результатов в месте вызова сниппета, приходилось писать вот так:
А по теме — Илья, спасибо! Буду знать на будущее — когда всё-таки решусь на обновление)
Ибо пока 2.2.15 стабильна, смысла переходить на 2.3 мало — постоянно появляются новые топики, что где-то что-то отваливается и работает не так, как задумано.
[[!snippet:toPlaceholder=`placeholder`:notempty=``]]
<div class="some-html">...</div>
[[+placeholder]]
<div class="some-html">...</div>
[[+placeholder]]
, т.е. надо было добавлять :notempty=``. Результат:<!-- здесь выведено ничего не будет -->
<div class="some-html">...</div>
result
<div class="some-html">...</div>
result
Такое иногда бывает нужно. Так что на версиях 2.2.* имейте в виду такой способ :-)А по теме — Илья, спасибо! Буду знать на будущее — когда всё-таки решусь на обновление)
Ибо пока 2.2.15 стабильна, смысла переходить на 2.3 мало — постоянно появляются новые топики, что где-то что-то отваливается и работает не так, как задумано.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.