TL; DR: apakah ada cara saya bisa men-debug memuat tata letak? Karena saya percaya tata letak satu modul bertentangan dengan yang lain.
Terkait dengan pertanyaan sebelumnya yang saya buat: Cara membuat tata letak modul untuk ditampilkan pada semua tema
Saya telah berhasil memuat modul saya pada lingkungan pengujian lokal saya (alias PC pengembangan saya), diuji beralih antara 3 tema yang berbeda dan itu ok. Kemudian saya memperbarui modul pada lingkungan pengujian atau "pra-produksi" yang kami miliki, di mana ada banyak modul yang berbeda, beberapa kepemilikan lain dibuat oleh kami. Pada lingkungan ini, modul tidak menunjukkan apa yang dibutuhkan di halaman depan produk. Setelah beberapa pengujian, saya akhirnya sampai pada kesimpulan bahwa masalahnya harus pada proses load layout.
Jadi, adakah cara saya bisa men-debug memuat tata letak, bagaimana modul yang berbeda mengganti atau menambahkan blok mereka sendiri? Maksud saya adalah saya percaya setidaknya ada satu modul yang harus bertentangan dengan modul saya. Dan karena kami memiliki begitu banyak modul, saya mencari pendekatan yang berbeda untuk menonaktifkan modul satu per satu dan melihat mana yang bermasalah.
File config.xml saya adalah:
<?xml version="1.0" encoding="UTF-8"?>
<config>
<modules>
<Dts_Banners>
<version>0.1.0</version>
</Dts_Banners>
</modules>
<global>
<blocks>
<banners>
<class>Dts_Banners_Block</class>
</banners>
</blocks>
....
<events>
<controller_action_layout_load_before>
<observers>
<attributesethandle>
<class>Dts_Banners_Model_Observer</class>
<method>addAttributeSetHandle</method>
</attributesethandle>
</observers>
</controller_action_layout_load_before>
</events>
</global>
....
</config>
File Observer saya:
<?php
class Dts_Banners_Model_Observer
{
/**
* Checks if the search text on the list of active campaigns (dts_banners_admin table) has some of the comma separated text on the product name
* If text found, add a layout handle PRODUCT_CAMPAIGN_BANNER after PRODUCT_TYPE_<product_type_id> handle
* This handle is handled on the banners.xml layout file that triggers the use of the Front.php frontend block
*
* Event: controller_action_layout_load_before
*
* @param Varien_Event_Observer $observer
*/
public function addAttributeSetHandle(Varien_Event_Observer $observer) {
$product = Mage::registry('current_product');
if (!($product instanceof Mage_Catalog_Model_Product)) return;
....
....
}
Ini adalah file layout saya:
<?xml version="1.0" encoding="UTF-8"?>
<layout version="0.1.0">
<default>
<reference name="content">
<block type="banners/front" name="banners.front" as="banners_front" template="banners/product.phtml" before="-"/>
</reference>
</default>
</layout>
Sebelumnya punya yang sedikit berbeda di mana bukannya <default></default>
aku <Product_Campaign_Banner></Product_Campaign_Banner>
. Itu juga berhasil.
File product.phtml saya:
<div class="visual">
<?php echo $this->showCampaign(); ?>
</div>
The product.phtml
file tidak dimuat dan oleh karena itu showCampaign
tidak dijalankan dan ada di mana semua HTML yang dibutuhkan dibuat.