Похоже, что вы SOL с виджетами, которые вы вставляете в страницы CMS через
{{widget...}}}
бирка. В отличие от экземпляров или добавления их напрямую через XML-файл обновления компоновки пакетов, Magento отображает эти блоки на лету. То есть, пока не будет вызван toHtml
для блока контента CMS, который Magento создает для блока {{widget...}}
. К тому времени головной блок уже рендерится, и манипулирование им программно больше не имеет никакого эффекта.
Вот такой подход я бы выбрал. Кажется, добавление javascript все еще работает (что имеет смысл, поскольку блок содержимого CMS будет отображаться до блока before_body_end
.) Изучите методы загрузки файлов CSS с помощью Javascript (старая ссылка, если вы воспользуетесь Google, хочу что то веб 2иш). Таким образом, вы можете добавить блок JavaScript, который может добавить файл CSS. Таким образом, весь ваш код все еще ограничен виджетом, и вы все равно получаете проверку вывода html. Это довольно распространенная техника.
Другие подходы включают
Только что добавили ваши стили в документ. Плохие практики HTML и все такое (стиль не в голове), но вы не будете первым, кто сделает это.
Наличие блока, который всегда добавляется в заголовок и содержит логику условного рендеринга. Непосредственно перед рендерингом сделайте так, чтобы он проверял объект макета для вашего виджета (через тип) ИЛИ он проверял, относится ли этот запрос к странице CMS, и проверяет ли содержимое страницы CMS директиву ({{widget...}}
) для рендеринга твой виджет Если любой из них верен, сделайте ссылку CSS отображенной. Если это не так, ссылка не отображается.