Використовуйте "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

ви можете зробити щось на кшталт модуля «Потрібний Js»: https://github.com/magento/magento2/blob/develop/app/code/Magento/RequireJs/Block/Html/Head/Config.php

Тут конфігурація Require і mixins вставляються безпосередньо після файлу requ.js.

Ви можете додати такі файли css як цей із умовою.

Тут я також виявив випуск із подібною проблемою, але на нього не отримано відповіді: https://github.com/magento/magento2/isissue/2004


1

Ви можете додати клас до тіла за допомогою конфігурації, а стиль CSS працює лише з цим класом.

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

Не вдалося змусити це працювати?
00-BBB

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 у своїй відповіді, щоб перевірити, чи вони Mabe забули додати це до 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.