@Marius 的回答是正确的,当只考虑安装 Magento 库存时,您无法分离 CMS 页面的布局,但是话虽如此,Magento 仍然是 OOP 和 PHP,所以有一种方法可以设置一个工具来做你想做的事。
它的诀窍是创建一个自定义布局处理程序,该处理程序被添加到 CMS 的页面布局中,这样,您可以通过 layout.xml 文件在页面上指定您想要的内容。
我自己做了这个,所以这是可能的。
创建一个自定义模块,该模块具有一个布局文件和一个观察者模型,该模型具有可以在以下事件上触发的功能。
<controller_action_layout_load_before>
然后可以使用此功能来确定您在哪个页面上。这是我在函数中用于注入布局句柄的代码(这可以大大改进以获得更好的可伸缩性)
// Triggered on the controller_action_layout_load_before Event
public function addCustomHandles( $observer ) {
$update = Mage::getSingleton('core/layout')->getUpdate();
if ( Mage::app()->getFrontController()->getRequest()->getModuleName() == 'cms' ) {
$update->addHandle( 'cmslayouthandler_cms_page_' . Mage::getSingleton('cms/page')->getIdentifier() );
}
}
此函数获取布局单例,确认它在 CMS 页面上,并根据当前选定的页面构造一个处理程序。它将添加如下处理程序:
'cmslayouthandler_cms_page_home'
然后,您将能够在您创建的模块布局文件中更新该页面的布局,有点像这样:
<layout version="1.0.0">
<cmslayouthandler_cms_page_home>
<reference name="content">
<block type="core/template" name="home_page" template="page/template/home.phtml" />
</reference>
</cmslayouthandler_cms_page_home>
</layout>
考虑到通过 Magento 管理面板创建的 CMS 页面需要在“内容”部分中有一个值,您可以轻松地放置一个空白的虚拟值或直接通过数据库将值清零,我个人更喜欢第一种方法。
祝你好运!