如何在magento中注入新块

如何在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

我正在处理自定义模块,并尝试在加载期间将自定义模块块代码嵌入cms块。我的区块代码是:

{{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中更新我,这将是一个很好的选择我的选择。