2012-01-04 1 views
0

Я искал в Интернете, как добавить «блок» с моим шаблоном на странице продукта. Я создаю свой настраиваемый модуль, который отображает некоторую информацию, и я хотел бы показать это, скажем, под длинным описанием моего продукта.Magento - Специальный пользовательский модуль на странице продукта

Я пытался отформатировать XML-макет моего модуля, но без везения.

После некоторого поиска я нашел это: Programatically create Magento blocks and inject them into layout, который я не могу заставить работать для меня. Но это, вероятно, потому, что я что-то пропустил.

Мой модуль структурирована следующим образом:

КОД: приложение/код/​​местные/deveti/Countrypurchase

ДИЗАЙН: приложение/дизайн/интерфейс/по умолчанию/по умолчанию/шаблон/Countrypurchase/index.phtml

ВИД: приложение/дизайн/интерфейс/по умолчанию/по умолчанию/макет/countrypurchase.xml

Я знаю, что правильный путь для редактирования основного файла макета вручную добавить блок, но я хотел бы сделать это на муха.

EDIT: это работает!

Так что я хотел бы сделать в моем макета модуля XML countrypurchase.xml что-то вроде этого:

<?xml version="1.0"?> 
<layout version="1.0"> 
    <catalog_product_view> 
     <reference name="product.info"> 
      <block type="core/template" name="product.countrypurchase" as="countrypurchase" template="countrypurchase/index.phtml" /> 
     </reference> 
    </catalog_product_view>  
</layout> 

И я добавил вызов в каталог/продукта/view.phtml:

<?php echo $this->getChildHtml('countrypurchase'); ?> 

И это работает;)

Благодарим за помощь!

+0

Я предполагаю, что ваш кеш отключен и очищен? –

+0

Да, это так. Я всегда проверяю это с отключенным и очищенным кешем. –

ответ

1

Проблема с страницей просмотра продукта заключается в том, что ее вывод главным образом контролируется кодом PHP в шаблоне catalog/product/view.phtml. Magento не предлагает много точек расширяемости из коробки. Вы можете добавить его в блок content, но это поставит ваш пользовательский контент либо полностью наверху, либо полностью внизу.

Я думаю, что вы должны изменить шаблон и добавить PHP код, чтобы сделать свой собственный блок в позиции, которую вы хотите, как:

<?php 
    echo $this->getChildHtml('product.countrypurchase'); 
?> 

При этом в месте вы можете добавить блок с именем product.countrypurchase через XML-макет или программно.

+0

Я добавил свой код к вопросу, если вы можете взглянуть. Спасибо! –

+0

Это сработало. Я отредактирую код в своем вопросе, если кому-нибудь еще понадобится это. –