TL; DR: có cách nào để tôi có thể gỡ lỗi tải bố cục không? Vì tôi tin rằng bố cục của một mô-đun là xung đột với nhau.
Liên quan đến câu hỏi trước tôi đã thực hiện: Cách tạo bố cục mô-đun để hiển thị trên tất cả các chủ đề
Tôi đã tải thành công mô-đun của mình trên môi trường thử nghiệm cục bộ (còn gọi là PC phát triển của tôi), đã thử nghiệm chuyển đổi giữa 3 chủ đề khác nhau và nó vẫn ổn. Sau đó, tôi đã cập nhật mô-đun trên môi trường thử nghiệm hoặc "tiền sản xuất" mà chúng tôi có, nơi có rất nhiều mô-đun khác nhau, một số mô-đun độc quyền khác do chúng tôi tạo ra. Trên môi trường này, mô-đun không hiển thị những gì cần thiết trên frontpage sản phẩm. Sau một số thử nghiệm, cuối cùng tôi đã đi đến kết luận rằng vấn đề nên nằm ở quá trình tải bố cục.
Vì vậy, có cách nào để tôi có thể gỡ lỗi tải bố cục, làm thế nào các mô-đun khác nhau thay thế hoặc thêm các khối riêng của chúng? Quan điểm của tôi là tôi tin rằng có ít nhất một mô-đun nên xung đột với tôi. Và vì chúng ta có rất nhiều mô-đun, tôi đang tìm kiếm một cách tiếp cận khác nhau để vô hiệu hóa từng mô-đun và xem đó là mô-đun có vấn đề.
Tệp cấu hình của tôi là:
<?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>
Tệp quan sát của tôi:
<?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;
....
....
}
Đây là tập tin bố trí của tôi:
<?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>
Trước đây có một chút khác nhau thay vì <default></default>
tôi có <Product_Campaign_Banner></Product_Campaign_Banner>
. Nó cũng làm việc.
Tập tin sản phẩm của tôi.
<div class="visual">
<?php echo $this->showCampaign(); ?>
</div>
Các product.phtml
tập tin không được tải và do đó showCampaign
không được thực hiện và có nơi tất cả các HTML cần thiết được tạo ra.