Saya memiliki pengontrol khusus yang diakses di jalur /custommodule/customer/info
yang memuat 2columns-left.phtml
template pada root
node sebagai berikut:
<custommodule_customer_info>
<reference name="root">
<action method="setTemplate"><template>page/2columns-left.phtml</template></action>
</reference>
</custommodule_customer_info>
Yang ingin saya lakukan adalah memperbarui templat root untuk pelanggan yang tidak masuk, seperti:
<customer_logged_out>
<custommodule_customer_info>
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
</custommodule_customer_info>
</customer_logged_out>
Saya mengerti bahwa saya tidak dapat menargetkan beberapa pegangan tata letak dengan cara ini, tetapi tujuannya harus jelas; perbarui templat root untuk pegangan tata letak ini sementara pelanggan tidak masuk.
Saya berpikir bahwa saya dapat menargetkan pegangan pengontrol saya dengan yang berikut:
<customer_logged_out>
<reference name="custommodule_customer_info">
<reference name="root">
<action method="setTemplate"><template>page/1column.phtml</template></action>
</reference>
</reference>
</customer_logged_out>
Ini memang memperbarui template root dengan 1column.phtml
template, tetapi melakukan hal itu pada apa yang tampaknya menjadi semua halaman, bukan hanya halaman yang ditargetkan di reference
node saya .
Saya telah mencoba beberapa permutasi dari pembaruan tata letak ini, tetapi sepertinya tidak ada yang berhasil. Bagaimana saya bisa menargetkan pegangan tata letak yang satu ini sementara pada saat yang sama menggunakan customer_logged_out
pegangan tata letak?
- edit - Agar jelas, ini sebenarnya adalah modul pihak ketiga.
customer_logged_in/out
pegangannya bisa sangat kuat, tetapi mereka menjadi lalai karena keterbatasan ini.Alan Storm telah menjawab sesuatu yang mirip seperti ini:
/programming//a/5601579/1157493
Anda dapat menggunakan helper untuk melakukan logika Anda memeriksa apakah kustom masuk.
Ini akan memanggil
Mage::helper('mymodule/myhelper')->switchTemplateIf();
In helper Anda dapat memutuskan untuk mengganti template atau membiarkannya seperti ini.Saya percaya ini menetapkan template untuk apa pun yang Anda
return
dalam fungsi itu.Akan terlihat seperti ini:
Belum dicoba
sumber
Saya baru-baru ini membutuhkan fungsionalitas semacam ini & semakin sulit menambahkan lebih banyak & lebih banyak pegangan tata letak untuk semua kombinasi yang berbeda dari pegangan tata letak yang ada, jadi saya membuat ekstensi magento untuk menambahkan kemampuan menargetkan beberapa pegangan tata letak dari tata letak xml secara langsung.
Berikut tautan ke ekstensi- https://github.com/mridul89/MultipleHandles.git
Anda akan menggunakannya seperti ini-
Ini akan memberitahu Magento untuk hanya menggunakan
customer_logged_out
pegangan tata letak khusus ini jikacustommodule_customer_info
tata letak pegangan juga ada.sumber