gpt4 book ai didi

magento:删除页面布局

转载 作者:行者123 更新时间:2023-12-03 11:12:20 25 4
gpt4 key购买 nike

在 magento 中,默认定义了以下页面布局:empty , one_column , two_columns_left , two_columns_rightthree_columns .

我想删除 two_columns_left , two_columns_right对于我的布局,因为用户可以在 CMS 和产品设计部分选择它,但它不起作用。

如何更改 XML 配置文件来完成此操作?

我发现我可以从 app/core/community/Mage/Page/etc/config.xml 中删除它,但我想在不更改任何核心源的情况下做到这一点,以便进行更新。

最佳答案

我偶然发现了这个问题,正在寻找类似的东西并想分享我的实现。也许它对那里的人有帮助。

下面将从可用模板列表中删除空的 2_columns_right 和 3_columns 布局。只需更改 remove_layouts config.xml 中的指令下面删除您要删除的任何内容。

我创建了一个模块(实际上是我为 magento 构建的第一个模块)并将以下内容放入文件 app/etc/modules/Labor_Templates.xml :

<?xml version="1.0"?>
<!--
/**
* This module changes the available templates. Only "1 column" and
* "2 column-left" will be available.
*/
-->
<config>
<modules>
<Labor_Templates>
<active>true</active>
<codePool>local</codePool>
<depends>
<Mage_Page />
</depends>
</Labor_Templates>
</modules>
</config>

接下来,我们需要一个 config.xml发现于 /app/code/local/Labor/Templates/etc :
<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
* Overrides the config to only allow "1 column" and "2 column left" layouts.
*/
-->
<config>
<modules>
<Labor_Templates>
<version>1.0.0</version>
</Labor_Templates>
</modules>
<global>
<models>
<template>
<class>Labor_Templates_Model</class>
</template>
<page>
<rewrite>
<config>Labor_Templates_Model_Config</config>
</rewrite>
</page>
</models>
<page>
<remove_layouts>
<layouts>empty,two_columns_right,three_columns</layouts>
</remove_layouts>
</page>
</global>
</config>

请注意,我添加了 remove_layouts指示。最后我们自己写 Labor_Templates_Model_Config类(class):
<?php
/**
* Overrides the Overrides the core module Mage_Page_Model_Config in order to
* remove unused template layouts. This is done by handling remove_layout
* directives.
*/
class Labor_Templates_Model_Config extends Mage_Page_Model_Config {

const XML_PATH_PAGE_REMOVE_LAYOUTS = 'global/page/remove_layouts';

/**
* Initialize page layouts list
*
* @return Labor_Templates_Model_Config
*/
protected function _initPageLayouts()
{
parent::_initPageLayouts();
return $this->_removePageLayouts(self::XML_PATH_PAGE_REMOVE_LAYOUTS);
}

/**
* Removes page layouts found in the remove_layouts XML directive
*
* @return Labor_Templates_Model_Config
*/
protected function _removePageLayouts($xmlPath)
{
if (!Mage::getConfig()->getNode($xmlPath) || !is_array($this->_pageLayouts)) {
return $this;
}
foreach (explode(',', (string)Mage::getConfig()->getNode($xmlPath)->children()->layouts) as $toRemove) {
unset($this->_pageLayouts[$toRemove]);
}
return $this;
}

}

使用 Magento 1.7.0 工作和测试。

关于magento:删除页面布局,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8226978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com