Utilice "ifconfig" para agregar condicionalmente activos CSS

10

¿Hay alguna forma de usar ifconfigen Magento 2 para agregar condicionalmente activos CSS, similar a Magento 1? Aquí hay un ejemplo de Magento 1:

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

Intenté algo como esto en Magento 2 pero no funciona:

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

Simplemente muestra el ifconfigatributo en la interfaz:

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

¿Hay algún equivalente en Magento 2?

maginfortis
fuente

Respuestas:

3

Parece que actualmente no es posible mirar la head.xsddefinición en la rama de desarrollo:

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

podría hacer algo como el Módulo Requerir Js: https://github.com/magento/magento2/blob/develop/app/code/Magento/RequireJs/Block/Html/Head/Config.php

Aquí, require config y mixins se insertan directamente después del archivo require.js.

Puede agregar sus archivos CSS como este con una condición.

También encontré un problema aquí con un problema similar, pero no obtuvo una respuesta: https://github.com/magento/magento2/issues/2004

David Verholen
fuente
1

Puede agregar una clase al cuerpo con la configuración, y el estilo CSS solo funciona con esa clase.

<reference name="root">
    <action method="addBodyClass" ifconfig="section/group/isactive_full_homepage">
        <classname>home-full-page</classname>
    </action>
</reference>
Nam Luuduc
fuente
¿No pudo hacer que esto funcione?
00-BBB
0

Echa un vistazo en este otro hilo:

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

Aplicó en el nodo de bloque en lugar del nodo de acción, tal vez pueda resolver.

PD: asegúrese de vaciar el caché y volver a compilar.

Phoenix128_RiccardoT
fuente
para blockType, en realidad se define en xsd: github.com/magento/magento2/blob/develop/lib/internal/Magento/… . @maginfortis, ¿trataste de agregar el ifconfig al nodo css? Si arroja un error de validación, podría intentar agregar el ifconfig al head.xsd mencionado en mi respuesta solo para validar si pueden olvidarse de agregar esto al xsd, o si en realidad no se implementó este parámetro;)
David Verholen
Sí, tienes razón, solo estaba revisándolo en el CSS. Tal vez una opción podría ser usar un contenedor de métodos "alrededor" definiendo un complemento.
Phoenix128_RiccardoT
1
Esto podría funcionar en este método: github.com/magento/magento2/blob/develop/lib/internal/Magento/… . Pero siempre debe tener mucho cuidado de no ejecutar el proceso (incluso si parece legítimo en este caso) porque todos los demás complementos que escuchan este método y se ejecutan después de este complemento tampoco se ejecutarán
David Verholen
Otra opción podría ser filtrarlo en la salida html simplemente usando un plugin after, ¿qué crees?
Phoenix128_RiccardoT
todo esto (también mi respuesta) no se siente realmente "correcto", ¿no es así?) Me pregunto si pensaron en otra forma de hacerlo o simplemente dejaron el ifconfig por error
David Verholen