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?

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


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>

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.


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.