Ketika saya membaca dokumentasi tentang tata letak halaman ( http://devdocs.magento.com/guides/v2.0/frontend-dev-guide/layouts/layout-types.html#layout-types-page ) saya melihat bahwa petunjuk berikut dalam dokumen XML ini diizinkan:
<container>
<referenceContainer>
<move>
<update>
Karena <referenceBlock name="block.name" remove="true" />
bukan salah satu dari instruksi yang diizinkan bagaimana saya bisa menghapus elemen tertentu dalam tata letak halaman tertentu?
Apa yang saya inginkan untuk kategori teratas adalah desain halaman lainnya. Saya tidak membutuhkan wadah dan balok tertentu untuk desain ini. Untuk kategori ini saya hanya ingin menunjukkan kategori anak dan bukan produk.
Hal yang saya lakukan sekarang adalah, menambahkan baris berikut dalam tata letak halaman saya: (dalam design\frontend\Vendor\Name-of-theme\Magento_Theme\page_layout\catalog-blocks.xml
)
<move element="category.image" destination="delete"></move>
<move element="category.description" destination="delete"></move>
<move element="category.products" destination="delete"></move>
<move element="page.main.title" destination="delete"></move>
Dalam design\frontend\Vendor\Name-of-theme\Magento_Theme\layouts.xml
I addded:
<layout id="catalog-blocks">
<label translate="true">Catalog Blocks</label>
</layout>
Saya memberikan semua kategori utama tata letak halaman blok-katalog ini di admin.
Kemudian di tata letak utama ( design\frontend\Vendor\Name-of-theme\Magento_Theme\layout\default.xml
) saya menambahkan:
<referenceBlock name="delete" remove="true" />
Jadi seluruh blok hapus akan dihapus, dengan semua hal yang saya pindahkan di sini, di tata letak halaman. Ini bekerja dengan baik! Ini benar-benar mencapai apa yang saya inginkan, tetapi bagi saya semuanya tampak seperti peretasan.
Apakah ini dianggap sebagai praktik yang baik? Jika tidak, apa yang akan menjadi alternatif yang baik?
Sunting 1 : Mengubah remove
-tag dalam pertanyaan saya dengan yang tepat untuk menghindari kebingungan.
Sunting 2 : Beberapa informasi lebih lanjut tentang file dan lokasi file.
Ini adalah praktik terbaik untuk menghapus blok atau wadah apa pun di magento 2. Anda dapat melewatinya
name attribute
dalamname
elemen di bawah.Anda dapat mencari di dalam sistem Magento 2, Anda telah menemukan banyak sintaksis tempat yang sama seperti di atas.
Rekomendasi magento-nya. Jika atribut remove = "true" lalu tambahkan elemen ke daftar hapus dari tata letak itu.
Di Magento 1
<remove> element
valid tetapi di Magento 2 Anda harus menetapkan sintaks yang sama seperti di atas.sumber
<referenceBlock name="block.name" remove="true" />
(saya salah tentangremove
tag) dalam tata letak halaman secara langsung karenareferenceBlock
tidak diperbolehkan. Saya masih harusmove
elemen ke 'delete-container' dan kemudian hapus di file tata letak utama. Yang sepertinya aneh bagi saya.<block class="Magento\Framework\View\Element\Html\Links" name="top.links">
, dalam hal ini Anda dapat menggunakan<referenceBlock name="top.links" remove="true" />
Layout halaman seharusnya hanya digunakan untuk membuat bingkai gambar / struktur halaman dan bukan untuk modifikasi yang lebih kecil seperti menghapus blok.
Untuk menghapus blok hanya untuk tata letak baru Anda, saya pikir cara terbaik adalah membuat pegangan tata letak Anda sendiri dan membuat modifikasi di sana. Misalnya Anda bisa membuat catalog_category_toplevel.xml yang menggunakan bingkai gambar / tata letak baru Anda dan menghapus blok di sana.
Karena ini lebih merupakan tugas back-end saya tidak merasa cukup nyaman untuk memberikan instruksi untuk ini maaf :( Dua artikel dari Alan Storm ini dapat membantu Anda dengan ini:
TL: DR
Jika Anda ingin melakukan ini dan mengikuti praktik terbaik, Anda perlu membuat pegangan tata letak baru.
sumber