题
我有一个有趣的情况,在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"}}
作为链接属性,它不会被替换。