Use "ifconfig" para adicionar condicionalmente ativos CSS


10

Existe alguma maneira de usar ifconfigno Magento 2 para adicionar condicionalmente ativos CSS, semelhantes ao Magento 1? Aqui está um exemplo do Magento 1:

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

Eu tentei algo assim no Magento 2, mas não funciona:

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

Apenas exibe o ifconfigatributo no 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" />

Existe algum equivalente no Magento 2?

Respostas:


3

Parece que atualmente não é possível olhar para a head.xsddefinição no ramo de desenvolvimento:

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

você poderia fazer algo como o módulo Require Js: https://github.com/magento/magento2/blob/develop/app/code/Magento/RequireJs/Block/Html/Head/Config.php

Aqui, a configuração de solicitação e os mixins são inseridos diretamente após o arquivo require.js.

Você pode adicionar seus arquivos css como este com uma condição.

Também encontrei um problema aqui com um problema semelhante, mas ele não obteve uma resposta: https://github.com/magento/magento2/issues/2004


1

Você pode adicionar uma classe ao corpo com a configuração, e o estilo CSS funciona apenas com essa classe.

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

Não foi possível fazer isso funcionar?
00-BBB

0

Dê uma olhada neste outro tópico:

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

Ele aplicou no nó do bloco em vez do nó da ação, talvez ele possa resolver.

PS: Esvazie o cache e recompile.


para o blockType, ele é realmente definido no xsd: github.com/magento/magento2/blob/develop/lib/internal/Magento/… . @maginfortis você tentou adicionar o ifconfig ao nó css? Se ele gerar um erro de validação, você pode tentar adicionar o ifconfig ao head.xsd mencionado na minha resposta apenas para validar se eles esqueceram de adicioná-lo ao xsd ou se realmente não há esse parâmetro implementado;)
David Verholen

Sim, você está certo, eu estava apenas verificando isso no CSS. Talvez uma opção possa estar usando um wrapper de método "around", definindo um plug-in.
Phoenix128_RiccardoT 16/02

1
isso poderia funcionar com este método: github.com/magento/magento2/blob/develop/lib/internal/Magento/… . Mas você deve sempre ser extremamente cuidadoso para não executar a prosseguir (mesmo que pareça legítimo, neste caso), porque todos os outros plugins ouvir sobre este método e executados após este plugin também não seria executado
David Verholen

Outra opção poderia ser filtrá-lo na saída html usando apenas um plug-in after, o que você acha?
Phoenix128_RiccardoT 16/02

tudo isso (também a minha resposta) não se sente realmente "direito" não-lo;) Gostaria de saber se eles achavam sobre outra maneira de fazer isso ou apenas deixou o ifconfig para fora por engano
David Verholen
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.