2016-03-04 88 views
0

我有一个问题,添加一个自定义PHP块到Magento中的产品视图。 该块不会显示在产品页面上。Magento扩展:添加自定义块到产品视图

这是我第一个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> 

/应用/代码/本地/ Whirlwindecom /个性化者的/ 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> 

/应用/设计/前端/碱/默认/模板/目录/产品/ 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下面的代码添加到view.phtml脚本在同一个地方作为我,直到最底层行:

var_dump(array_keys($this->getLayout()->getAllBlocks())); 

它输出以下,从而验证该Magento看到该块?:

array(100) { 
    ... 
    [95]=> string(28) "whirlwind_personalizer_block" 
    ... 
} 

在此先感谢您的任何帮助,您可以提供!

回答

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> 
相关问题