2016-03-04 2 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/Personalizer/и т.д./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 сценария на том же месте, как мой getChildHtml линии:

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> 
Смежные вопросы