Используйте «ifconfig» для условного добавления CSS-ресурсов


10

Есть ли способ использовать ifconfigв Magento 2 для условного добавления CSS-ресурсов, аналогично Magento 1? Вот пример из Magento 1:

<action ifconfig="config_path/group/field" method="addItem">
    <type>skin_css</type><name>css/styles.css</name>
</action>

Я пробовал что-то подобное в Magento 2, но это не работает:

<head>
    <css src="css/styles.css"
        ifconfig="config_path/group/field" />
</head>

Он просто отображает ifconfigатрибут в интерфейсе:

<link rel="stylesheet" type="text/css" 
    ifconfig="config_path/group/field" 
    href="http://example.com/pub/static/frontend/Magento/luma/en_US/css/styles.css" />

Есть ли эквивалент в Magento 2?

Ответы:


3

Похоже, что в настоящее время невозможно найти head.xsdопределение в ветви разработки:

https://github.com/magento/magento2/blob/develop/lib/internal/Magento/Framework/View/Layout/etc/head.xsd#L9

Вы можете сделать что-то вроде модуля Require Js: https://github.com/magento/magento2/blob/develop/app/code/Magento/RequireJs/Block/Html/Head/Config.php

Здесь требуемый конфиг и миксины вставляются непосредственно после файла require.js.

Вы можете добавить свои CSS-файлы, как это с условием.

Я также нашел здесь проблему с похожей проблемой, но она не получила ответа: https://github.com/magento/magento2/issues/2004


1

Вы можете добавить класс к телу с помощью конфигурации, и стиль CSS работает только с этим классом.

<reference name="root">
    <action method="addBodyClass" ifconfig="section/group/isactive_full_homepage">
        <classname>home-full-page</classname>
    </action>
</reference>

Не могу заставить это работать?
00-ВВВ

0

Посмотрите в этой другой теме:

/programming/32582704/magento-2-get-scopeconfig-values

Он применил в узле блока вместо узла действия, может быть, он может решить.

PS: обязательно очистите кеш и перекомпилируйте.


для blockType это фактически определено в xsd: github.com/magento/magento2/blob/develop/lib/internal/Magento/… . @maginfortis вы пытались добавить ifconfig к узлу css? Если он выдает ошибку проверки, вы можете попытаться добавить ifconfig к заголовку head.xsd, указанному в моем ответе, просто чтобы проверить, не забыли ли они добавить это в xsd или если этот параметр на самом деле не реализован;)
Дэвид Верхолен

Да, вы правы, я просто проверял это в CSS. Возможно, одним из вариантов может быть использование обертки «вокруг» метода путем определения плагина.
Phoenix128_RiccardoT

1
это может работать с этим методом: github.com/magento/magento2/blob/develop/lib/internal/Magento/… . Но вы всегда должны быть предельно осторожны, не выполняя процедуру (даже если это кажется законным в этом случае), потому что все остальные плагины, прослушивающие этот метод и выполняемые после этого плагина, также не будут выполнены
Дэвид Верхолен

Другой вариант может быть отфильтровать его в выводе html, просто используя плагин после, что вы думаете?
Phoenix128_RiccardoT

все это (также мой ответ) не кажется действительно «правильным», не так ли;) мне интересно, думали ли они о другом способе сделать это или просто оставили ifconfig по ошибке
Дэвид Верхолен
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.