У меня возникла проблема с добавлением настраиваемого блока 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"
...
}
Заранее благодарим за любую помощь, которую вы можете предоставить!