Verwenden Sie "ifconfig", um CSS-Assets bedingt hinzuzufügen

10

Gibt es eine Möglichkeit, ifconfigin Magento 2 CSS-Assets ähnlich wie in Magento 1 bedingt hinzuzufügen? Hier ist ein Beispiel aus Magento 1:

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

Ich habe so etwas in Magento 2 versucht, aber es funktioniert nicht:

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

Es wird nur das ifconfigAttribut im Frontend angezeigt :

<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" />

Gibt es ein Äquivalent in Magento 2?

Maginfortis
quelle

Antworten:

3

Es scheint, dass es derzeit nicht möglich ist, die head.xsdDefinition im Entwicklungszweig zu betrachten:

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

Sie können so etwas wie das Require Js Module ausführen: https://github.com/magento/magento2/blob/develop/app/code/Magento/RequireJs/Block/Html/Head/Config.php

Hier werden die erforderlichen Konfigurationen und Mixins direkt nach der Datei require.js eingefügt.

Sie können Ihre CSS-Dateien wie folgt mit einer Bedingung hinzufügen.

Ich habe hier auch ein Problem mit einem ähnlichen Problem gefunden, aber es wurde keine Antwort erhalten: https://github.com/magento/magento2/issues/2004

David Verholen
quelle
1

Sie können dem Body mit der Konfiguration eine Klasse hinzufügen, und der CSS-Stil funktioniert nur mit dieser Klasse.

<reference name="root">
    <action method="addBodyClass" ifconfig="section/group/isactive_full_homepage">
        <classname>home-full-page</classname>
    </action>
</reference>
Nam Luuduc
quelle
Konnte das nicht funktionieren?
00-BBB
0

Schauen Sie sich diesen anderen Thread an:

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

Er hat im Blockknoten statt im Aktionsknoten angewendet, vielleicht kann es lösen.

PS: Stellen Sie sicher, dass Sie den Cache leeren und neu kompilieren.

Phoenix128_RiccardoT
quelle
für den blockType ist er tatsächlich in der xsd definiert: github.com/magento/magento2/blob/develop/lib/internal/Magento/… . @maginfortis Haben Sie versucht, die ifconfig zum CSS-Knoten hinzuzufügen? Wenn es einen Validierungsfehler auslöst, können Sie versuchen, die in meiner Antwort erwähnte Datei ifconfig zur Datei head.xsd hinzuzufügen, um zu überprüfen, ob sie möglicherweise vergessen hat, diese zur xsd hinzuzufügen, oder ob dieser Parameter tatsächlich nicht implementiert ist;)
David Verholen
Ja, Sie haben Recht, ich habe es nur im CSS überprüft. Möglicherweise besteht eine Option darin, einen "around" -Methoden-Wrapper zu verwenden, indem ein Plugin definiert wird.
Phoenix128_RiccardoT
1
Dies könnte mit dieser Methode funktionieren: github.com/magento/magento2/blob/develop/lib/internal/Magento/… . Aber Sie sollten immer äußerst vorsichtig sein, wenn Sie das Verfahren nicht ausführen (auch wenn es in diesem Fall legitim erscheint), da alle anderen Plugins, die diese Methode
abhören
Eine andere Möglichkeit könnte darin bestehen, es in der HTML-Ausgabe nur mit einem After-Plugin herauszufiltern. Was denkst du?
Phoenix128_RiccardoT
das alles (auch meine Antwort) fühlt sich nicht wirklich "richtig" an, nicht wahr;) Ich frage mich, ob sie über einen anderen Weg nachgedacht haben oder die ifconfig versehentlich
weggelassen haben