如何在magento中注入新块
我正在处理自定义模块,并尝试在加载期间将自定义模块块代码嵌入cms块。我的区块代码是:如何在magento中注入新块,magento,magento-1.7,Magento,Magento 1.7,我正在处理自定义模块,并尝试在加载期间将自定义模块块代码嵌入cms块。我的区块代码是: {{block type="module/block_name" categories="2,4,3" template="catalog/product/list.phtml" }} 这在cms块页面上运行。但我试图在运行时嵌入块代码。为此,我创建了一个事件 <events> <controller_action_layout_generate_blocks_before&g
{{block type="module/block_name" categories="2,4,3" template="catalog/product/list.phtml" }}
这在cms块页面上运行。但我试图在运行时嵌入块代码。为此,我创建了一个事件
<events>
<controller_action_layout_generate_blocks_before>
<observers>
<mypage>
<type>singleton</type>
<class>Module_Model_Observer</class>
<method>addlisttocms</method>
</mypage>
</observers>
</controller_action_layout_generate_blocks_before>
</events>
现在我想,当cms页面加载,我嵌入我的块使用上述功能。有可能吗?使用布局XML或自定义小部件来实现这一点 自定义模块布局XML文件:
<cms_page_view>
<block name="some.block" type="module/block_name" parent="content" template="catalog/product/list.phtml">
<action method="setCategories">
<ids>2,3,4</ids>
</action>
</block>
</cms_page_view>
2,3,4
使用布局XML或自定义小部件来完成此操作
自定义模块布局XML文件:
<cms_page_view>
<block name="some.block" type="module/block_name" parent="content" template="catalog/product/list.phtml">
<action method="setCategories">
<ids>2,3,4</ids>
</action>
</block>
</cms_page_view>
2,3,4
我得到了答案。将事件更改为“controller\u action\u layout\u generate\u xml\u before”,并在observer中插入如下代码
$layout = $observer->getLayout();
$layout->getUpdate()->addUpdate('<reference name="content">
<block name="mymodule" type="mymodule/blockname" template="catalog/product/list.phtml">
<action method="setCategories">
<ids>2,3,4</ids>
</action>
</block>
</reference>');
$layout->generateXml();.
$layout=$observer->getLayout();
$layout->getUpdate()->addUpdate('
.我得到了答案。将事件更改为“controller\u action\u layout\u generate\u xml\u before”,并在observer中插入如下代码
$layout = $observer->getLayout();
$layout->getUpdate()->addUpdate('<reference name="content">
<block name="mymodule" type="mymodule/blockname" template="catalog/product/list.phtml">
<action method="setCategories">
<ids>2,3,4</ids>
</action>
</block>
</reference>');
$layout->generateXml();.
$layout=$observer->getLayout();
$layout->getUpdate()->addUpdate('
.你能提供更详细的答案吗?在我的手机上完成了,所以有点短。抱歉,如果你看到我的问题,我想在observer中添加此块代码,而不是在xml中。我正在尝试这样的代码$observer->getEvent()->getLayout()->getUpdate()->addUpdate()动态添加我的块。希望你明白我的意思。我不明白你的意思。你为什么要这样做/必须这样做?布局中的每个块也可以这样做。它们不这样做是有原因的。原因是我动态地获取ID,而在xml中我认为我不能这样做。如果你知道在xml中更新我,这将是一个很好的选择我的选择。你能提供一点更详细的答案吗。?完成了,在我的手机上,所以有点短。对不起,如果你看到我的问题,我想在observer中而不是在xml中添加此块代码。我正在尝试这样的代码$observer->getEvent()->getLayout()->getUpdate()->addUpdate()动态添加我的块。希望你明白我的意思。我不明白你的意思。你为什么要这样做/必须这样做?布局中的每个块也可以这样做。它们不这样做是有原因的。原因是我动态地获取ID,而在xml中我认为我不能这样做。如果你知道在xml中更新我,这将是一个很好的选择我的选择。