0
我想在Magento中以編程方式設置塊的位置。以編程方式在Magento中設置塊的位置
例如我希望我可以設置一個塊作爲位置:
以下產品視圖頁
的「內容」在側欄(左/右)
任何其他塊之前/之後。
請提出建議的方式。
我想在Magento中以編程方式設置塊的位置。以編程方式在Magento中設置塊的位置
例如我希望我可以設置一個塊作爲位置:
以下產品視圖頁
的「內容」在側欄(左/右)
任何其他塊之前/之後。
請提出建議的方式。
我找到了解決方案。您可以使用觀察器動態設置塊位置。 首先在<Namespace>/<Module>/Model
目錄下創建Observer.php
。寫下面的代碼在這個文件中:
class <Namespace>_<Module>_Model_Observer
{
public function set_block($observer)
{
$action = $observer->getEvent()->getAction();
$fullActionName = $action->getFullActionName();
$position = 'right';
$sub_position = 'before="cart_sidebar"';
$myXml = '<reference name="'.$position.'">';
$myXml .= '<block type="obc/obc" name="obc" template="obc/obc.phtml" '.$sub_position.' />';
$myXml .= '</reference>';
$layout = $observer->getEvent()->getLayout();
if ($fullActionName=='catalog_product_view') { //set any action name here
$layout->getUpdate()->addUpdate($myXml);
$layout->generateXml();
}
}
}
現在3210寫入以下行來調用觀察者:
<events>
<controller_action_layout_generate_blocks_before>
<observers>
<module_block_observer>
<type>singleton</type>
<class><Namespace>_<Module>_Model_Observer</class>
<method>set_block</method>
</module_block_observer>
</observers>
</controller_action_layout_generate_blocks_before>
</events>
現在,您可以隨時隨地在頁面上使用觀察者設置你的塊的位置。
爲什麼不能使用insert(blockname,sibling,after,alias)方法? – kaushik 2013-12-11 09:08:17
你有什麼試過? ESL可能是一個因素,但這些看起來像面試問題。 – benmarks 2013-03-26 13:03:02