TL; DR: mizanpajın yüklenmesinde hata ayıklayabilmemin bir yolu var mı? Bir modülün düzeninin bir başkasıyla çelişkili olduğuna inandığım gibi
Yaptığım bir önceki soru ile ilgili: Tüm temalarda gösterilecek bir modül düzeni nasıl yapılır ?
Modülümü yerel test ortamıma (yani geliştirme bilgisayarım) başarıyla yükledim, 3 farklı tema arasında geçiş yaptım ve sorun yok. Daha sonra sahip olduğumuz çok sayıda farklı modülün yer aldığı test veya "üretim öncesi" ortamındaki modülü güncelledik. Bu ortamda, modül ürünün ön sayfasında neyin gerekli olduğunu göstermiyor. Bazı testlerden sonra nihayet sorunun yerleşim yükü sürecinde olması gerektiği sonucuna vardım.
Öyleyse, mizanpajın yüklenmesinde hata ayıklayabileceğim, farklı modüllerin kendi bloklarını ne şekilde değiştireceği veya ekleyebileceğim bir yolu var mı? Demek istediğim, benimkiyle çelişmesi gereken en az bir modül olduğuna inanıyorum. Çok fazla modülümüz olduğu için, modülleri tek tek devre dışı bırakmaktan ve hangisinin sorunlu olduğunu görmekten farklı bir yaklaşım arıyorum.
Config.xml dosyam şudur:
<?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>
Gözlemcim dosyası:
<?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;
....
....
}
Bu benim düzen dosyam:
<?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>
Önceden <default></default>
bende yerine biraz farklı bir tane vardı <Product_Campaign_Banner></Product_Campaign_Banner>
. Aynı zamanda çalıştı.
Product.phtml dosyam:
<div class="visual">
<?php echo $this->showCampaign(); ?>
</div>
product.phtml
Dosya yüklü değil ve bu nedenle showCampaign
yerine getirilmez ve tüm gerekli HTML oluşturulur nerede vardır.