TL: DR:มีวิธีที่ฉันสามารถดีบักการโหลดเค้าโครงหรือไม่ เพราะฉันเชื่อว่าเลย์เอาต์ของโมดูลหนึ่งขัดแย้งกับโมดูลอื่น
ที่เกี่ยวข้องกับคำถามก่อนหน้านี้ที่ฉันทำ: วิธีการทำให้รูปแบบโมดูลที่จะแสดงในทุกรูปแบบ
ฉันโหลดโมดูลของฉันสำเร็จแล้วในสภาพแวดล้อมการทดสอบในพื้นที่ (หรือที่เรียกว่า PC สำหรับการพัฒนาของฉัน) ทดสอบการสลับระหว่าง 3 ธีมที่แตกต่างกันและมันก็โอเค จากนั้นฉันอัปเดตโมดูลในการทดสอบหรือสภาพแวดล้อม "ก่อนการผลิต" ที่เรามีซึ่งมีโมดูลที่แตกต่างกันจำนวนมากบางส่วนเป็นกรรมสิทธิ์อื่น ๆ ที่ทำโดยเรา ในสภาพแวดล้อมนี้โมดูลจะไม่แสดงสิ่งที่จำเป็นในหน้าแรกของผลิตภัณฑ์ หลังจากการทดสอบบางอย่างในที่สุดฉันก็มาถึงข้อสรุปว่าปัญหาควรจะอยู่ในกระบวนการโหลดรูปแบบ
ดังนั้นมีวิธีที่ฉันสามารถดีบักการโหลดโครงร่างโมดูลต่าง ๆ แทนที่หรือเพิ่มบล็อกของตัวเองได้อย่างไร ประเด็นของฉันคือฉันเชื่อว่ามีอย่างน้อยหนึ่งโมดูลที่ควรขัดแย้งกับของฉัน และในขณะที่เรามีโมดูลจำนวนมากฉันกำลังมองหาวิธีการที่แตกต่างกันในการปิดใช้งานโมดูลทีละคนและดูว่าเป็นปัญหาที่มีปัญหา
ไฟล์ config.xml ของฉันคือ:
<?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>
ไฟล์ Observer ของฉัน:
<?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;
....
....
}
นี่คือไฟล์เลย์เอาต์ของฉัน:
<?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>
ก่อนหน้านี้มีความแตกต่างกันเล็กน้อยหนึ่งที่แทนของฉันได้<default></default>
<Product_Campaign_Banner></Product_Campaign_Banner>
มันยังใช้งานได้
ไฟล์ product.phtml ของฉัน:
<div class="visual">
<?php echo $this->showCampaign(); ?>
</div>
product.phtml
ไฟล์ไม่โหลดและดังนั้นจึงshowCampaign
ไม่ได้ดำเนินการและมีที่ทุก HTML จำเป็นจะถูกสร้างขึ้น