4

有没有一种简单的方法可以在 CMS 块或页面之外的其他东西上连接 Magento 小部件呈现功能?

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

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

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

我尝试了以下方法,其中 $tipstext 是包含小部件指令的工具提示 HTML,但不行。没想到会这么简单!

Mage_Cms_Model_Template_Filter::filter($tipstext);

任何人都知道是否/如何轻松实现这一目标?

4

2 回答 2

12

该类Mage_Cms_Model_Template_Filter没有widgetDirective方法,因此它不知道如何解析{{widget}}短代码。改为尝试Mage_Widget_Model_Template_Filter

Mage::getSingleton('widget/template_filter')->filter($text);
于 2013-10-11T11:57:06.160 回答
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;
?>
于 2014-11-17T07:25:48.353 回答