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?

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


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>

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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.