Когда код рендеринга макета встречает это
<block type="layout/carousel" name="featured_carousel">
Он немедленно создает блок. Это означает, что метод __construct
блока вызывается до вызова вашего setData
метода. Таким образом, во время создания не было установлено никаких данных, поэтому ваши вызовы var_dump
возвращают пустой массив.
Также сразу после создания блок добавляется в макет
#File: app/code/core/Mage/Core/Model/Layout.php
...
$block->setLayout($this);
...
Когда это происходит, вызывается метод _prepareLayout
блока.
#File: app/code/core/Mage/Core/Block/Abstract.php
public function setLayout(Mage_Core_Model_Layout $layout)
{
$this->_layout = $layout;
Mage::dispatchEvent('core_block_abstract_prepare_layout_before', array('block' => $this));
$this->_prepareLayout();
Mage::dispatchEvent('core_block_abstract_prepare_layout_after', array('block' => $this));
return $this;
}
Таким образом, это означает, что любой набор данных в вашем обновлении макета xml все еще недоступен, даже в _prepareLayout
. Как только система закончит создание блока, она перейдет к следующему узлу XML.
<action method="setData">
<name>filter_attribute</name>
<value>is_featured_product</value>
</action>
и вызывает метод setData
. Теперь у вашего блока есть набор данных.
Попробуйте определить метод _beforeToHtml
в своем блоке и проверить там данные. (При условии, что ваш блок рендерится)