Utilisez «ifconfig» pour ajouter conditionnellement des actifs CSS

10

Existe-t-il un moyen d'utiliser ifconfigdans Magento 2 pour ajouter conditionnellement des actifs CSS, similaire à Magento 1? Voici un exemple de Magento 1:

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

J'ai essayé quelque chose comme ça dans Magento 2 mais cela ne fonctionne pas:

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

Il affiche simplement l' ifconfigattribut sur le frontend:

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

Y a-t-il un équivalent dans Magento 2?

maginfortis
la source

Réponses:

3

Il semble qu'il ne soit pas possible actuellement de regarder la head.xsddéfinition dans la branche develop:

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

vous pouvez faire quelque chose comme le module Js requis: https://github.com/magento/magento2/blob/develop/app/code/Magento/RequireJs/Block/Html/Head/Config.php

Ici, la configuration requise et les mixins sont insérés directement après le fichier require.js.

Vous pouvez ajouter vos fichiers CSS comme celui-ci avec une condition.

J'ai également trouvé un problème ici avec un problème similaire, mais il n'a pas obtenu de réponse: https://github.com/magento/magento2/issues/2004

David Verholen
la source
1

Vous pouvez ajouter une classe au corps avec la configuration et le style CSS ne fonctionne qu'avec cette classe.

<reference name="root">
    <action method="addBodyClass" ifconfig="section/group/isactive_full_homepage">
        <classname>home-full-page</classname>
    </action>
</reference>
Nam Luuduc
la source
Impossible de faire fonctionner cela?
00-BBB du
0

Jetez un oeil dans cet autre fil:

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

Il a appliqué le nœud de bloc au lieu du nœud d'action, peut-être que cela peut résoudre.

PS: assurez-vous de vider le cache et de recompiler.

Phoenix128_RiccardoT
la source
pour le blockType, il est en fait défini dans xsd: github.com/magento/magento2/blob/develop/lib/internal/Magento/… . @maginfortis avez-vous essayé d'ajouter l'ifconfig au nœud css? Si cela génère une erreur de validation, vous pouvez essayer d'ajouter l'ifconfig au mention head.xsd dans ma réponse juste pour valider s'ils mabe ont oublié d'ajouter ceci au xsd, ou s'il n'y a pas réellement ce paramètre implémenté;)
David Verholen
Oui, vous avez raison, je venais de le vérifier dans le CSS. Peut-être qu'une option pourrait utiliser un wrapper de méthode "around" en définissant un plugin.
Phoenix128_RiccardoT
1
cela pourrait fonctionner sur cette méthode: github.com/magento/magento2/blob/develop/lib/internal/Magento/… . Mais vous devez toujours être extrêmement prudent de ne pas exécuter la procédure (même si cela semble légitime dans ce cas) car tous les autres plugins écoutant cette méthode et exécutés après ce plugin ne seront pas non plus exécutés
David Verholen
Une autre option pourrait être de le filtrer dans la sortie html en utilisant simplement un plugin after, qu'en pensez-vous?
Phoenix128_RiccardoT
tout cela (aussi ma réponse) ne me semble pas vraiment "bien" n'est-ce pas?) Je me demande s'ils ont pensé à une autre façon de faire cela ou s'ils ont juste laissé l'ifconfig par erreur
David Verholen