0

我正在开发自定义模块,并尝试在加载期间将我的自定义模块块代码嵌入到 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> 

在观察者上,我创建函数:

public function addlisttocms(Varien_Event_Observer $observer)
    {
     $controller = Mage::app()->getRequest()->getControllerName();
     $layout = Mage::app()->getRequest()->getRouteName();
     $var = Mage::app()->getRequest()->getActionName();
     $page =  Mage::app()->getRequest()->getParam('page_id');
}

现在我希望当 cms 页面加载时,我使用上述函数嵌入我的块。是否可以 ?

4

2 回答 2

2

使用布局 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>
于 2012-12-28T05:06:38.880 回答
1

我将 answer.change 事件更改为 'controller_action_layout_generate_xml_before' 并在观察者中注入代码

  $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();.

为参考检查网站

于 2012-12-28T07:43:35.950 回答