我在向Magento的产品视图中添加自定义PHP块时遇到问题。 该块只是无法在产品页面上显示。
这是我的第一个Magento扩展的一部分。希望你能帮助我。
我的方法基于以下链接的教程: https://gist.github.com/grafikchaos/11148771
请注意,我与本教程中的流程无关 - 我对此方法的任何建议/调整持开放态度。
我创建/调整的文件如下:
/app/etc/modules/Whirlwindecom_Personalizer.xml
<?xml version="1.0" encoding="UTF-8"?>
<!-- located at: app/etc/modules/Whirlwindecom_Personalizer.xml -->
<config>
<modules>
<Whirlwindecom_Personalizer>
<active>true</active>
<codePool>local</codePool>
</Whirlwindecom_Personalizer>
</modules>
</config>
/app/code/local/Whirlwindecom/Personalizer/etc/config.xml
请注意,此文件包含其他节点,以支持此扩展程序中与此问题无关的其他部分
<?xml version="1.0"?>
<config>
<modules>
<Whirlwindecom_Personalizer>
<version>0.1.0</version>
</Whirlwindecom_Personalizer>
</modules>
<global>
<blocks>
<whirlwindecom_personalizer>
<class>Whirlwindecom_Personalizer_Block</class>
</whirlwindecom_personalizer>
</blocks>
<models>
<whirlwindecom_personalizer>
<class>Whirlwindecom_Personalizer_Model</class>
</whirlwindecom_personalizer>
</models>
</global>
<frontend>
<routers>
<whirlwindecom_personalizer>
<use>standard</use>
<args>
<module>Whirlwindecom_Personalizer</module>
<frontName>personalizer</frontName>
</args>
</whirlwindecom_personalizer>
</routers>
<layout>
<updates>
<whirlwindecom_personalizer module="Whirlwindecom_Personalizer">
<file>whirlwindecom_personalizer.xml</file>
</whirlwindecom_personalizer>
</updates>
</layout>
</frontend>
<adminhtml>
<layout>
<updates>
<whirlwindecom_personalizer>
<file>whirlwindecom_personalizer.xml</file>
</whirlwindecom_personalizer>
</updates>
</layout>
<events>
<catalog_product_save_after>
<observers>
<Whirlwindecom_save_product_data>
<type>singleton</type>
<class>Whirlwindecom_Personalizer_Model_Observer</class>
<method>saveProductTabData</method>
</Whirlwindecom_save_product_data>
</observers>
</catalog_product_save_after>
</events>
</adminhtml>
</config>
/app/design/frontend/base/default/layout/whirlwindecom_personalizer.xml
<?xml version="1.0"?>
<layout version="0.1.0">
<catalog_product_view>
<reference name="whirlwind_personalizer">
<block type="core/template" name="whirlwind_personalizer_block" template="whirlwindecom/personalizer/personalize.phtml" />
</reference>
</catalog_product_view>
</layout>
/app/design/frontend/base/default/template/catalog/product/view.phtml
添加了以下内容:
<?php echo $this->getChildHtml('whirlwind_personalizer_block'); ?>
在:
<div class="product-shop">
/app/design/frontend/base/default/template/whirlwindecom/personalizer/personalize.phtml
<?php
// let's output a message to verify this script is being included and displayed
echo "Personalizer Success!";
?>
最后一点说明。为了调试我的工作并追查问题的原因,我temporarilly将以下代码添加到与我的getChildHtml行相同位置的view.phtml脚本中:
var_dump(array_keys($this->getLayout()->getAllBlocks()));
它输出以下内容,验证Magento是否看到了块?:
array(100) {
...
[95]=> string(28) "whirlwind_personalizer_block"
...
}
提前感谢您提供的任何帮助!
答案 0 :(得分:0)
Preshna Valanda的回答 https://magento.stackexchange.com/users/28492/prashant-valanda
===============================
更改您的文件代码
<强> /app/design/frontend/base/default/layout/whirlwindecom_personalizer.xml 强>
<?xml version="1.0"?>
<layout version="0.1.0">
<catalog_product_view>
<reference name="content">
<block type="core/template" name="whirlwind_personalizer_block" template="whirlwindecom/personalizer/personalize.phtml" />
</reference>
</catalog_product_view>
</layout>