我有一个有趣的情况,在CMS页面上,我在此处定义了一些新块 update_layout_xml 部分 - 需要使用短代码语法从CMS内容本身中引用该部分 {{block ...}}

我知道可以定义从CMS TextArea进行实例化的新块 - 但是是否可以引用现有块来定义需要插入的确切位置。

使用 update_layout_xml 仅允许使用 before= 或者 after= - 尽管我需要更多的颗粒状控制才能将元素定位在 content 阻止自己。如果要通过 phtml 文件 - 这只是使用 getChildHtml - 但是对于CMS来说似乎并不等同。

我知道我可以扩展 Mage_Widget_Model_Template_Filter 并添加一个新功能 - 但是是否已经有一种核心方法来执行此操作?

有帮助吗?

解决方案

我延长了 Mage_Widget_Model_Template_Filter 为了添加此功能,它可以解决问题,但是我想知道是否有一个 本国的 做到这一点的方法。

public function getchildDirective($construction)
{
    $layout = Mage::app()->getLayout();
    $blockParameters = $this->_getIncludeParameters($construction[2]);

    return $layout->getBlock('root')->getChildHtml($blockParameters['id']);

}

其他提示

根据您的操作方法,您应该能够将功能添加到块的_construct方法(由块类型定义)

但是,如果您的操作方法只是设置一些变量

<action method="setCategoryId"><category_id>17</category_id></action>

然后,您可以这样将这些参数添加到您的笑容语法中:

{{block type="cms/block" block_id="your_block_id" category_id="17"}}

我知道您可以使用这样的内容在CMS内容中包含静态块:

{{block type="cms/block" block_id="your_block_id"}}

我不明白为什么此方法对自定义块不起作用。您至少尝试过吗?

当短代码位于模块中的变量中时,它不会修复它。

示例:我有一个滑块模块,当我输入时 {{store direct_url="customer-service"}} 作为链接属性,它不会被替换。

许可以下: CC-BY-SA归因
scroll top