2009-07-10 2 views
2

Возможно ли передать переменную из родительского шаблона в дочерний шаблон. Например, если я хотел поставить некоторые повторенные HTML в отдельный шаблон, который был включен в цикл по каждому элементу в родительском шаблонеНаследование и повторное использование шаблонов Magento

<?php 

foreach ($items as $item) 
{ 
    echo $this->getChildHtml('item_info'); 
} 

?> 

Я хотел бы быть в состоянии получить доступ к переменной $ элемента в item_info шаблона.

Благодаря

ответ

4

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

В родительском шаблоне, я что-то вроде:

<?PHP 
$this->getChild('product_list_list')->setData('products', $_productCollection); 
echo $this->getChildHtml('product_list_list'); 
?> 

В шаблоне ребенка я могу сделать:

<?php foreach ($this->products as $_product): ?> 
    // display products 
<?php endforeach; ?> 

Таким образом, вы должны быть в состоянии сделать:

$this->getChild('item_info')->setData('item', $item); 

, а затем в item_info, получить к нему доступ как

$this->item 

Надеюсь, что сработает для вас. Работает для меня на magento 1.3, но это кажется довольно фундаментальным, поэтому, вероятно, для всех версий.

1

Я знаю, что это не новый пост, но вот немного завершение:

вы должны вызвать getChildHtml с атрибутом кэша на ложные, такие как:

$this->getChildHtml('item_info', false); 

А потом, он будет работать отлично ,

Thank you benlumley