2012-06-06 3 views
1

У меня есть небольшой пользовательский модуль, который должен отображаться на всех страницах продукта, но это не так. Он отображается только при настройке ссылки на «контент», но я хочу, чтобы он отображался в уже существующих видах представления продукта, таким образом, отображая его в ссылке «product.info».Magento: настраиваемый макет модуля не работает

Вот мой код:

приложение/дизайн/интерфейс/по умолчанию/компания/макет/компания/socialbuttons.xml

<?xml version="1.0"?> 
<layout> 
    <catalog_product_view> 
    <reference name="product.info"> 
    <block type="core/template" name="company_socialbuttons" template="company/socialbuttons.phtml" /> 
</reference> 
    </catalog_product_view> 
</layout> 

Я провел часы находя ошибки, без успеха и если я не могу найти решение в ближайшее время, я сделаю это уродливым способом (вызывая phtml внутри родительского phtml). Что я делаю не так?

ответ

1

product.info ручка является экземпляром catalog/product_view блока, и content представляет собой экземпляр блока core/text_list. Последний блок передает каждый дочерний блок, даже если в шаблоне нет вызова метода getChildHtml().
Итак, если вы хотите добавить свой блок в product.info, вы должны позвонить по телефону getChildHtml() в шаблоне.
Или, вы можете попробовать ссылку на другие блоки в product.info блоке: alert.urlsproduct.info.extrahint или

+0

Великих, модуль теперь отображается при обращении alert.urls (или product.info.extrahint). Еще один вопрос: есть ли способ изменить положение блока alert.urls через local.xml, не перемещая вызов getChildHtml ('alert_urls') в view.phtml? – Socrates

+1

@Socrates - Почему вы хотите использовать блок alert.urls для чего-то совершенно другого (кнопки для социальных сетей), чтобы избежать использования вызова getChildHtml. Не лучше ли вы, чтобы код был хорошо написан и структурирован? –

+0

@Socrates, к сожалению, невозможно переместить блок alert_urls с помощью local.xml –

1

Если непосредственно ссылающийся на блок product.info, то вам придется использовать вызов getChildHtml() в шаблоне вида продукта:

echo $this->getChildHtml('company_socialbuttons');

Смежные вопросы