2014-10-17 33 views
0

我在佈局文件塊:Magento的:添加子塊編程

<block type="core/template_facade" name="product.info.container2" as="container2"> 
        <action method="setDataByKey"><key>alias_in_layout</key><value>container2</value></action> 
        <action method="setDataByKeyFromRegistry"><key>options_container</key><key_in_registry>product</key_in_registry></action> 
        <action method="append"><block>product.info.options.wrapper</block></action> 
        <action method="append"><block>product.info.options.wrapper.bottom</block></action> 
       </block> 

而且此塊:

$item_block = Mage::getSingleton('core/layout')->createBlock('catalog/product_list','item')->setTemplate('sns/ajaxcart/catalog/product/item.phtml')->setData('product', $product); 

我怎麼有上部區段爲$ item_block的孩子編程?我知道它應該是這樣的:

$upper_block = <create upper block>; 
$item_block->setChild('somealias',$upper_block); 

但是,上面的塊似乎太複雜,我知道如何以編程方式創建它。請幫忙!

回答

0

試試這個

$upper_block = Mage::getSingleton('core/layout') ->createBlock('core/template_facade', "product.info.container2"); 
$upper_block->setDataByKey('alias_in_layout', 'container2'); 
$upper_block->setDataByKeyFromRegistry('options_container', 'product'); 
$upper_block->append('product.info.options.wrapper'); 
$upper_block->append('product.info.options.wrapper.bottom'); 

$item_block = Mage::getSingleton('core/layout')->createBlock('catalog/product_list','item')->setTemplate('sns/ajaxcart/catalog/product/item.phtml')->setData('product', $product); 

$item_block->setChild('somealias',$upper_block); 
1

在塊級別,你可以做這樣的:

protected function _prepareLayout() 
{ 
    $block = $this->getLayout()->createBlock('catalog/product_list') 
    $this->setChild('items', $block); 
    return parent::_prepareLayout(); 
}