Используйте «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?

maginfortis
источник

Ответы:

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>
Nam Luuduc
источник
Не могу заставить это работать?
00-ВВВ
0

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

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

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

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

Phoenix128_RiccardoT
источник
для 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 по ошибке
Дэвид Верхолен