Gunakan "ifconfig" untuk menambahkan aset CSS secara kondisional

10

Apakah ada cara untuk digunakan ifconfigdi Magento 2 untuk menambahkan aset CSS secara kondisional, mirip dengan Magento 1? Berikut ini contoh dari Magento 1:

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

Saya mencoba sesuatu seperti ini di Magento 2 tetapi tidak berhasil:

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

Itu hanya menampilkan ifconfigatribut di 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" />

Apakah ada yang setara di Magento 2?

maginfortis
sumber

Jawaban:

3

Sepertinya saat ini tidak mungkin melihat head.xsddefinisi di mengembangkan cabang:

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

Anda dapat melakukan sesuatu seperti Membutuhkan Modul Js: https://github.com/magento/magento2/blob/develop/app/code/Magento/RequireJs/Block/Html/Head/Config.php

Di sini, config membutuhkan dan mixin dimasukkan langsung setelah file require.js.

Anda dapat menambahkan file css Anda seperti ini dengan suatu syarat.

Saya juga menemukan Masalah di sini dengan masalah yang sama, tetapi tidak mendapatkan jawaban: https://github.com/magento/magento2/issues/2004

David Verholen
sumber
1

Anda bisa menambahkan kelas ke tubuh dengan konfigurasi, dan gaya CSS hanya berfungsi dengan kelas itu.

<reference name="root">
    <action method="addBodyClass" ifconfig="section/group/isactive_full_homepage">
        <classname>home-full-page</classname>
    </action>
</reference>
Nam Luuduc
sumber
Tidak bisakah ini berfungsi?
00-BBB
0

Lihat di utas lainnya ini:

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

Dia diterapkan di blok simpul bukan simpul tindakan, mungkin itu bisa menyelesaikan.

PS: Pastikan untuk mengosongkan cache dan kompilasi ulang.

Phoenix128_RiccardoT
sumber
untuk blockType sebenarnya didefinisikan dalam xsd: github.com/magento/magento2/blob/develop/lib/internal/Magento/… . @maginfortis Anda mencoba menambahkan ifconfig ke simpul css? Jika ada kesalahan validasi, Anda dapat mencoba menambahkan ifconfig ke head.xsd mentionend dalam jawaban saya hanya untuk memvalidasi jika mereka lupa menambahkan ini ke xsd, atau jika sebenarnya tidak ada parameter yang diterapkan;)
David Verholen
Yap, Anda benar, saya baru saja memeriksanya di CSS. Mungkin satu opsi bisa menggunakan pembungkus metode "sekitar" dengan mendefinisikan plugin.
Phoenix128_RiccardoT
1
ini dapat bekerja pada metode ini: github.com/magento/magento2/blob/develop/lib/internal/Magento/… . Tetapi Anda harus selalu sangat berhati-hati untuk tidak menjalankan proses (bahkan jika tampaknya sah dalam kasus ini) karena semua plugin lain yang mendengarkan metode ini dan dieksekusi setelah plugin ini juga tidak akan dieksekusi
David Verholen
Pilihan lain bisa memfilternya dalam output html hanya menggunakan setelah plugin, bagaimana?
Phoenix128_RiccardoT
semua ini (juga jawaban saya) tidak terasa benar-benar "benar" bukan;) saya ingin tahu apakah mereka memikirkan cara lain untuk melakukan ini atau hanya membiarkan ifconfig karena kesalahan
David Verholen