Saya ingin melakukan beberapa hal, dan saya baru dan sangat jauh dari mahir dengan Magento; apa yang saya minta adalah cara terbaik dan paling ringkas untuk melakukan hal berikut:
Saya ingin mengedit konten halaman rumah saya — dan mungkin setiap halaman CMS lainnya, saat saya melanjutkan proyek ini — dalam editor teks saya dan bukan di panel admin WYSIWYG. Saya kira saya hanya memiliki template seperti
home-content.phtml
berisi markup untuk carousel (s) saya dan apa pun yang akhirnya saya pasang di halaman rumah saya. Tampaknya bagi saya cara yang paling logis untuk melakukan ini adalah melampirkan sayahome-content.phtml
kegetChildHtml('content')
metode dalam panel Admin -> CMS -> Pages -> Halaman -> 'Desain' tab -> Tata Letak Perbarui xml dengan kode seperti ini:<reference name="content"> <block type="core/template" name="home-content" as="home-content" template="home-content.phtml" /> </reference>
Namun, itu kacau oleh hal berikutnya yang ingin saya lakukan ...
Menurut pendapat saya, struktur HTML Magento default adalah membengkak mengerikan, dengan terlalu banyak bersarang
div
( wrapper -> halaman -> main-container col1-layout -> main -> col-main hanya untuk mendapatkan konten halaman) . Membuat gaya dengan Sass menjadi mimpi buruk bagi saya, dengan semua gaya kelas dibagi menjadi 5 bagian Sass yang berbeda. Jadi, saya membersihkan struktur default agar sesuai dengan prinsip desain saya sendiri. Bagian dari ini berarti menghilangkan elemen kosong, seperti yang terkenal<div class="std"> </div>
. Cara paling ampuh untuk menghilangkan ini (karena saya tidak berencana menggunakan panel admin untuk konten) adalah dengan<remove name="cms.wrapper">
di XML Pembaruan Tata Letak CMS. Masalahnya adalah, ini menghapus apa pun yang saya tambahkan dengan metode di atas (reference name="content"
).
Pada dasarnya: Bagaimana saya bisa menambahkan konten ke Halaman Beranda saya dengan .phtml
dan menghapus <div class="std"> </div>
tanpa konflik? Saya tidak mengerti bagaimana fungsi admin -> CMS -> pembaruan tata letak XML berbeda dari fungsionalitas layout.xml, atau mengapa saya harus menggunakan yang satu di atas yang lain (seperti, bisakah saya tidak menggunakan <cms index-index>
untuk melakukan hal yang sama?) .
Terima kasih sebelumnya, semuanya.
sumber
.std
tambahkan gaya daftar di tempat yang tidak diinginkan. Bisa ditebak dengan Magento, itu adalah prosedur yang panjang untuk diselesaikan.Jawaban:
Biarkan kami membagi masalah Anda menjadi 3 bagian dan memeriksanya.
1. Anda perlu menambahkan file template ke Halaman CMS Anda
Metode yang Anda adopsi di sini pasti akan berhasil. Itu adalah Anda perlu menambahkan potongan kode ini di dalam halaman cms Anda, di bawah tab desain
Karena file template Anda langsung
content
diblokir, konten template Anda akan diberikan oleh magento. Jadi, Anda tidak perlu menggunakanas
properti dicore/template block
.2. Cara menghindarinya
<div class="std"></div>
Div ini sebenarnya merupakan elemen div pembungkus untuk halaman cms. Lihat definisi dari blok ini di sini.
Seperti yang Anda lihat,
cms.wrapper
blok adalah tipepage/html_wrapper
. Apa yang dilakukan blok ini adalah, ia akan membungkus semua blok anaknya dengan elemen div (elemen default) dan membuat blok anak secara otomatis.Untuk menghindari blok ini, Anda telah menggunakan kode ini
Namun itu sama sekali salah. Memang menghapus div pembungkus memang. Tetapi seiring dengan itu juga menghapus itu blok anak
cms_page
. Inicms_page
dengan tipecms/page
. Itu berarti referensi ke blokMage_Cms_Block_Page
. Blok ini adalah "jantung" dari Halaman CMS. Jadi melepas pembungkus juga menghapus blok jantung CMS Page. Itu sebabnya Anda tidak mendapatkan output apa pun di halaman cms Anda.Jadi apa yang harus Anda lakukan untuk menghindari bungkus ini? Jawabannya cukup sederhana. Keluar
cms_page
dari pembungkus dan kemudian lepaskan pembungkus dengan aman. Jadi di sini adalah kode yang perlu Anda gunakan pada bagian tata letak halaman cms Anda.Seperti yang Anda lihat di kode tata letak xml, pertama-tama kita menghapus pembungkus dan karenanya memasukkan
cms_page
blok melalui kode kita. Kami juga menggunakan blok template kami seperti yang Anda lihat. Ini akan membuat konten file templat pertama di halaman Anda, kemudian diikuti oleh konten halaman cms.3. Bagaimana admin -> CMS -> pembaruan tata letak XML berbeda dari fungsionalitas tata letak.xml
Misalkan Anda ingin memiliki tampilan khusus untuk salah satu Halaman CMS yang Anda miliki di situs Anda. Untuk itu, metode terbaik yang dapat Anda pilih adalah, tambahkan pembaruan tata letak melalui admin-> CMS-> Layout. Ini akan diterapkan secara unik untuk halaman CMS saja.
Tetapi jika Anda perlu menerapkan beberapa perubahan umum pada semua Halaman CMS, maka itu akan mudah dilakukan
layout.xml
.Jadi secara umum, metode apa yang harus diadopsi untuk mengubah tata letak murni tergantung pada apa yang ingin Anda capai. Tergantung pada itu, Anda harus menggunakan satu metode. Tidak semua metode.
Semoga itu bisa membantu
sumber
Jika hanya ada satu halaman yang menyinggung, maka cara IMO terbaik dan termudah:
Edit
"Design"
tab halaman CMS .Referensi elemen pembungkus, gunakan
setElementClass
metode untuk menerapkan kelas tanpa atau kelas baru.sumber
Anda harus memodifikasi tata letak, biasanya 1column.phtml, 2columns.phtml, dll dan menjadikannya seperti yang Anda inginkan / butuhkan.
PHTML tersebut adalah struktur dasar tata letak apa pun dan secara program terisi dengan pembaruan XML.
Ini tidak akan mempengaruhi hal lain jika Anda menjaga konsistensi antara templat dan tata letak di tema Anda sendiri.
sumber
if this is the home page, include this code ...
pada semua halaman tata letak, lalu hanya menghapusgetCHildHtml('content')
pada semua halaman? Saya ingin belajar cara menggunakan Magento dan alat-alatnya lebih baik, bukan hanya palu masalah.Butuh satu menit untuk memahami semua arahan dalam jawaban yang diterima, jadi untuk mendukungnya, inilah yang diperlukan untuk menghapus pembungkus untuk semua halaman CMS:
<div class="std"></div>
Di cms.xml, ubah blok cms_page ke:
sumber