Magento小部件呈现在非CMS内容中

时间:2013-08-12 14:17:09

标签: magento static widget rendering block

是否有一种简单的方法可以在CMS块或页面之外的其他内容上挂接Magento小部件呈现功能?

我有一个工具提示扩展程序,可以在自定义选项上显示工具提示。将有许多产品都具有相同的选项,并且都需要相同的工具提示文本。虽然我们使用的工具提示扩展提供了一种方法来声明可以在产品上使用的片段,但是片段会在设置时添加到单个产品,而不是引用单个片段实例。因此,如果工具提示内容需要在所有产品中进行更改,我们必须编辑代码段,然后将修改后的代码段重新应用于所有产品。

最好能够直接引用代码段,而不是仅仅在产品设置中使用它,但这不是它的工作原理。因此,另一种方法是在工具提示描述中包含一个静态块,并使用我们主题已经提供的小部件功能引用单个描述实例,该功能适用​​于CMS页面,例如{{widget type =“cms / widget_block”template =“cms / widget / static_block / default.phtml”block_id =“xx”}},其中xx是为此工具提示创建的块。

这需要工具提示HTML描述解析通过Magento中的任何内容解析内容HTML并处理它包含的任何窗口小部件指令。

我尝试了以下内容,其中$ tipstext是包含widget指令的工具提示HTML,但没有去。没想到会那么简单!

Mage_Cms_Model_Template_Filter::filter($tipstext);

Anyhone有任何想法是否/如何轻松实现这一目标?

2 个答案:

答案 0 :(得分:10)

班级Mage_Cms_Model_Template_Filter没有widgetDirective方法,因此它不知道如何解析{{widget}}短代码。请改为Mage_Widget_Model_Template_Filter

Mage::getSingleton('widget/template_filter')->filter($text);

答案 1 :(得分:0)

这应该有效

<?php
$filter = new Mage_Widget_Model_Template_Filter();
$_widget = $filter->filter('{{widget type="cms/widget_page_link" template="cms/widget/link/link_block.phtml" page_id="2"}}');
echo $_widget;
?>