我正试图发现这是否可能。我们有一系列代表我们图书馆的CMS页面。
因此,这些页面的URL键如下:
要添加静态块的功能,该静态块将在库CMS页面上仅显示 。在布局XML文件中,是否有一种方法可以定位包含关键字的所有页面,因此我可以按照
的方式执行某些操作。<default>
....
</default>
<library_*>
<reference name="right">
<block goes here/>
</reference>
</library_*>
答案 0 :(得分:1)
您可能会发现this question对了解CMS页面布局很有用。因此,虽然你无法按照正确的方式完成你想要做的事情,但这里有几个选择:
这可能是我首选的解决方案,因为它利用开箱即用的功能,需要较少的维护,无需修改编码知识。
编辑CMS页面时,请转到设计标签:
您可以在此处更改为其他页面模板。您可以选择自定义页面模板 - that you create,并在右侧列中插入静态块 - 在布局下,或者将自定义布局XML直接添加到文本字段中:
不可否认,这会违反DRY原则,因为您会在每个相关的CMS页面上执行此操作,但这并不是违规行为,而是使用Magento的预期功能。
与我之前链接的问题中的示例类似,您可以创建一个adds new layout handles到相关CMS页面的简单扩展名。观察者可能看起来像这样:
class My_LayoutHandle_Model_Observer
{
public function addLibraryCmsHandle(Varien_Event_Observer $observer)
{
if ($observer->getAction()->getFullActionName() == 'cms_page_view') {
$page = Mage::getSingleton('cms/page');
if (substr($page->getIdentifier(), 0, 7) == 'library') {
/** @var $layout Mage_Core_Model_Layout */
$layout = $observer->getLayout();
$layout->getUpdate()->addHandle('CUSTOM_HANDLE_LIBRARY_PAGE');
}
}
}
}
然后你可以像这样定位你的新句柄:
<CUSTOM_HANDLE_LIBRARY_PAGE>
<reference name="right">
<block goes here/>
</reference>
</CUSTOM_HANDLE_LIBRARY_PAGE>