Utilizzare "ifconfig" per aggiungere in modo condizionale risorse CSS


10

Esiste un modo per utilizzare ifconfigin Magento 2 per aggiungere in modo condizionale risorse CSS, simile a Magento 1? Ecco un esempio da Magento 1:

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

Ho provato qualcosa di simile in Magento 2 ma non funziona:

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

Visualizza solo l' ifconfigattributo sul 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" />

C'è qualche equivalente in Magento 2?

Risposte:


3

Sembra che al momento non sia possibile guardare la head.xsddefinizione nel ramo di sviluppo:

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

potresti fare qualcosa come il modulo Require Js: https://github.com/magento/magento2/blob/develop/app/code/Magento/RequireJs/Block/Html/Head/Config.php

Qui, la configurazione richiesta e i mixin vengono inseriti direttamente dopo il file require.js.

È possibile aggiungere i file CSS come questo con una condizione.

Ho anche trovato un problema qui con un problema simile, ma non ho ottenuto una risposta: https://github.com/magento/magento2/issues/2004


1

Puoi aggiungere una classe a body con la configurazione e lo stile CSS funziona solo con quella classe.

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

Non riesci a farlo funzionare?
00-BBB,

0

Dai un'occhiata a quest'altra discussione:

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

Ha applicato il nodo a blocchi anziché il nodo di azione, forse può risolverlo.

PS: assicurati di svuotare la cache e ricompilare.


per blockType è attualmente definito in xsd: github.com/magento/magento2/blob/develop/lib/internal/Magento/… . @maginfortis hai provato ad aggiungere ifconfig al nodo CSS? Se genera un errore di convalida, potresti provare ad aggiungere ifconfig al menzionato head.xsd nella mia risposta solo per confermare se si sono dimenticati di aggiungere questo a xsd o se in realtà non è stato implementato questo parametro;)
David Verholen

Sì, hai ragione, lo stavo solo controllando nel CSS. Forse un'opzione potrebbe essere quella di utilizzare un wrapper del metodo "around" definendo un plugin.
Phoenix128_RiccardoT

1
questo potrebbe funzionare con questo metodo: github.com/magento/magento2/blob/develop/lib/internal/Magento/… . Ma dovresti sempre stare molto attento a non eseguire il procedimento (anche se sembra legittimo in questo caso) perché tutti gli altri plugin che ascoltano questo metodo ed eseguiti dopo questo plugin non verrebbero eseguiti
David Verholen,

Un'altra opzione potrebbe essere quella di filtrarlo nell'output html usando solo un plugin after, cosa ne pensi?
Phoenix128_RiccardoT

tutto questo (anche la mia risposta) non sembra davvero "giusto", non è vero;) mi chiedo se hanno pensato ad un altro modo di fare questo o se hanno semplicemente lasciato fuori ifconfig per errore
David Verholen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.