Magento Наследование и повторное использование переменных шаблона - PullRequest
2 голосов
/ 10 июля 2009

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

<?php

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

?>

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

Спасибо

Ответы [ 2 ]

4 голосов
/ 11 июля 2009

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

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

<?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 голос
/ 09 сентября 2009

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

Вы должны вызвать getChildHtml с атрибутом cache в false, например:

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

И тогда, это будет отлично работать.

Спасибо, Бенлумли

...