【问题标题】:Magento widget rendering in non-CMS content非 CMS 内容中的 Magento 小部件呈现
【发布时间】:2013-08-12 14:17:08
【问题描述】:

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

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

最好能够直接引用 sn-p 而不是仅在产品设置中使用它,但这不是它的工作原理。因此,另一种方法是在工具提示描述中包含一个静态块,并使用我们的主题已经提供的适用于 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);

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

【问题讨论】:

    标签: magento static widget rendering block


    【解决方案1】:

    Mage_Cms_Model_Template_Filter 类没有widgetDirective 方法,所以它不知道如何解析{{widget}} 短代码。试试Mage_Widget_Model_Template_Filter:

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

    【讨论】:

    • 感谢您的建议,但不幸的是这也不起作用。
    • 我收回了。效果很好。我的问题是我试图在 Adminhtml 布局中呈现它,但它找不到模板。在前端工作得很好谢谢!
    • 使用指令 CMS 工作正常 :)
    【解决方案2】:

    这应该可行

    <?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;
    ?>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多