Użyj „ifconfig”, aby warunkowo dodać zasoby CSS

10

Czy jest jakiś sposób na użycie ifconfigw Magento 2, aby warunkowo dodać zasoby CSS, podobnie jak Magento 1? Oto przykład z Magento 1:

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

Próbowałem czegoś takiego w Magento 2, ale to nie działa:

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

Po prostu wyświetla ifconfigatrybut w interfejsie użytkownika:

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

Czy jest jakiś odpowiednik w Magento 2?

maginfortis
źródło

Odpowiedzi:

3

Wygląda na to, że obecnie nie jest możliwe spojrzenie na head.xsddefinicję w gałęzi developerskiej:

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

możesz zrobić coś takiego jak Require Js Module: https://github.com/magento/magento2/blob/develop/app/code/Magento/RequireJs/Block/Html/Head/Config.php

Tutaj wymagana konfiguracja i miksy są wstawiane bezpośrednio po pliku Requ.js.

Możesz dodać swoje pliki css w ten sposób pod warunkiem.

Znalazłem tu także problem z podobnym problemem, ale nie uzyskałem odpowiedzi: https://github.com/magento/magento2/issues/2004

David Verholen
źródło
1

Możesz dodać klasę do treści za pomocą config, a styl CSS działa tylko z tą klasą.

<reference name="root">
    <action method="addBodyClass" ifconfig="section/group/isactive_full_homepage">
        <classname>home-full-page</classname>
    </action>
</reference>
Nam Luuduc
źródło
Nie udało się uruchomić tego?
00-BBB
0

Spójrz na ten inny wątek:

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

Zastosował w węźle blokowym zamiast w węźle akcji, być może może to rozwiązać.

PS: Pamiętaj o opróżnieniu pamięci podręcznej i ponownej kompilacji.

Phoenix128_RiccardoT
źródło
dla blockType jest on faktycznie zdefiniowany w xsd: github.com/magento/magento2/blob/develop/lib/internal/Magento/… . @maginfortis próbowałeś dodać ifconfig do węzła css? Jeśli zgłasza błąd sprawdzania poprawności, możesz spróbować dodać ifconfig do nagłówka head.xsd w mojej odpowiedzi, aby sprawdzić, czy mabe zapomniało dodać to do xsd, czy też faktycznie nie został zaimplementowany ten parametr;)
David Verholen
Tak, masz rację, właśnie sprawdzałem to w CSS. Być może jedną z opcji może być użycie opakowania metody „wokół” poprzez zdefiniowanie wtyczki.
Phoenix128_RiccardoT
1
może to działać w przypadku tej metody: github.com/magento/magento2/blob/develop/lib/internal/Magento/… . Ale zawsze powinieneś być bardzo ostrożny, nie wykonując procedury (nawet jeśli w tym przypadku wydaje się to uzasadnione), ponieważ wszystkie inne wtyczki nasłuchujące przy użyciu tej metody i wykonane po tej wtyczce również nie zostałyby wykonane
David Verholen
Inną opcją może być odfiltrowanie go w pliku wyjściowym HTML za pomocą wtyczki After, co myślisz?
Phoenix128_RiccardoT
to wszystko (także moja odpowiedź) nie wydaje się tak naprawdę „prawda”, prawda;) zastanawiam się, czy pomyśleli o innym sposobie zrobienia tego, czy po prostu pomyłkowo
zrezygnowali z konfiguracji