Magento - 根据环境加载local.xml

2024-01-11

我想要 3 个app/etc/local.xml文件 - 将它们称为 local.xml staging.xml 和 live.xml。

我想根据我在 vhosts 或 htaccess 中设置的环境变量加载它们。这样我就可以拥有单独的数据库等,但我可以在 svn 下保存 1 个代码库。

实现这一目标的最佳方法是什么?


local.xml is 硬编码的在多个 Magento 文件中。

因此,如果您想为此实现自己的文件名选择,则必须override分别是几个核心类/方法/函数。

扫描local.xml* 表明 - 除其他事项外 - 你必须修改/app/Mage.php。那是因为你无法覆盖Mage(它是final class).

请注意,修改/app/Mage.php是可能的,但是每次升级到下一个 Magento 版本都会覆盖您的更改。

如果你可以忍受这一点,你还必须至少覆盖

Mage_Core_Model_Config
Mage_Core_Model_Layout_Update

也许另外

Mage_Install_Model_Installer_Config
Mage_Adminhtml_Block_Notification_Security (1.5.1)

根据您的需求。

执行

设置文件名选择方法,例如在助手中:

class Mynamespace_Mymodule_Helper_Data extends Mage_Core_Helper_Data
{
    public function getLocalXMLFileName()
    {
        return getenv('MY_XML') . 'xml';
    }    
}

在您重写的核心类中,只需调用您的辅助方法,例如改变

$updateFiles[] = 'local.xml';

to

$updateFiles[] = Mage::helper('mymodule')->getLocalXMLFileName();

* I only scanned 1.3.2.x, 1.5.1 and 1.8.1.0. In other versions more/less classes maybe affected.

1.3.2.x:

./app/code/core/Mage/Install/Model/Installer/Config.php:49:
    $this->_localConfigFile = Mage::getBaseDir('etc').DS.'local.xml';

./app/code/core/Mage/Core/Model/Layout/Update.php:283:
    $updateFiles[] = 'local.xml';

./app/code/core/Mage/Core/Model/Config.php:214:
    $localConfigLoaded  = $this->loadFile($etcDir.DS.'local.xml');

./app/code/core/Mage/Core/Model/Config.php:248:
    $configFile  = $etcDir.DS.'local.xml';

./app/Mage.php:521:
    $localConfigFile = self::getRoot() . DS . $etcDir . DS . 'local.xml';

1.5.1:

./app/code/core/Mage/Install/Model/Installer/Config.php:49:
    $this->_localConfigFile = Mage::getBaseDir('etc').DS.'local.xml';

./app/code/core/Mage/Core/Model/Layout/Update.php:418:
    $updateFiles[] = 'local.xml';

./app/code/core/Mage/Core/Model/Config.php:280:
    if (in_array($etcDir.DS.'local.xml', $files)) {

./app/code/core/Mage/Core/Model/Config.php:322:
    $this->_isLocalConfigLoaded = $mergeConfig->
        loadFile($this->getOptions()->getEtcDir().DS.'local.xml');

./app/code/core/Mage/Adminhtml/Block/Notification/Security.php:36:
    private $_filePath = 'app/etc/local.xml';

./app/Mage.php:671:
    $localConfigFile = self::getRoot() . DS . $etcDir . DS . 'local.xml';

./errors/processor.php:34:
    const MAGE_ERRORS_LOCAL_XML = 'local.xml';

1.8.1.0:

./app/code/core/Mage/Install/Model/Installer/Config.php:49:
    $this->_localConfigFile = Mage::getBaseDir('etc') . DS . 'local.xml';

./app/code/core/Mage/Install/Model/Installer/Config.php:103:
    $template = file_get_contents(Mage::getBaseDir('etc') . DS . 'local.xml.template');

./app/code/core/Mage/Core/Model/Config.php:280:
    if (in_array($etcDir.DS.'local.xml', $files)) {

./app/code/core/Mage/Core/Model/Config.php:324:
    $this->_isLocalConfigLoaded =
        $mergeConfig->loadFile($this->getOptions()->getEtcDir().DS.'local.xml');

./app/code/core/Mage/Core/Model/Layout/Update.php:311:
    // $updateFiles[] = 'local.xml';

./app/code/core/Mage/Core/Model/Layout/Update.php:431:
    $updateFiles[] = 'local.xml';

./app/code/core/Mage/Adminhtml/Block/Notification/Security.php:36:
    private $_filePath = 'app/etc/local.xml';

./app/Mage.php:762:
    $localConfigFile = $etcDir . DS . 'local.xml';

./errors/processor.php:34:
   const MAGE_ERRORS_LOCAL_XML = 'local.xml';
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Magento - 根据环境加载local.xml 的相关文章

  • Magento 1.7.0.0 上的 SOAP V2 url 是什么

    1 7 0 0 版本中访问 Magento SOAP V2 的 url 是否已更改 当我尝试访问 上的服务 时http www somedomain com api v2 soap wsdl 1 http www somedomain co
  • 使用 getCollection 和 addLevelFilter 列出 Magento 类别,但排除默认根类别

    我使用以下代码来获取集合并使用 addLevelFilter 2 在级别上进行过滤 这会完美地输出第 2 级的所有类别 除了它还会提取列表中的默认根类别之外 我想从视图中排除它 但在查看了所有可用的方法后 我没有看到任何可以帮助我删除 排除
  • Magento CSRF 保护

    我正在 Magento 中查看自定义表单 我看到了这些教程 http fastdivision com 2012 03 29 diy magento create ajax login registration forms for your
  • 如何在magento中将订单状态设置为“完成”

    如何手动将订单状态设置为 完成 我正在使用以下代码 但它给出错误消息 订单状态 完成 不得手动设置 order Mage getModel sales order gt loadByIncrementId order id order gt
  • Magento 1.8 - 高级搜索不起作用

    我在最新版本的 magento 中发现了一个奇怪的错误 高级搜索工具无法正常工作 我做了什么 安装 magento 的新副本 在管理页面添加了一个名为 测试 1 的产品 重新索引全部 清除所有缓存 At the frontend page
  • 通过列计数拆分时重复表头

    我正在 Magento 中输出产品列表 作为包装在表格中的简单列表 由于此列表可能会很长 100 个以上产品 因此我使用了来自这里的想法 https stackoverflow com questions 21001803 how to h
  • 在 Magento 中获取购物车详细信息

    我想通过使用 Magento 获取购物车详细信息getQuote功能 我怎样才能做到这一点 cart Mage getModel checkout cart gt getQuote 当我打印 cart页面停止执行并显示空白页面 但是当我写的
  • 如何在 magento 的左侧栏中显示最新、评价最高和最好的产品

    我正在使用 Magento 版本 1 5 0 1 在主页中 我使用了 2 列和左栏 我想逐一展示最新的 评价最高的和最好的产品 请帮助我如何做到这一点 我是magento新手请帮助我 在您的 app design frontend your
  • 无法从配置文件设置基本 URL

    我尝试使用这里描述的方法Magento 将基本网址存储在配置文件中 https stackoverflow com questions 17618236 magento storing base url in a config file从
  • 查询magento limit + order by rand()

    function getIdModelsSliderJuwels collection Mage getModel catalog product gt getCollection collection gt addAttributeToF
  • magento成功页面变量

    我正在尝试捕获一些 magento 成功页面变量以传递给我们的广告公司 到目前为止 我已经得到了这个 但变量没有输出任何内容 数据需要采用以下格式 price1 price2 price3 qty1 qty2 qty3 sku1 sku2
  • Magento 从 Observer 重定向始终有效

    我无法从观察者在 Magento 中创建工作重定向 据我所知 有很多事件都获得了响应对象 在 observer目的 另一种方法是使用类似的东西 Mage app gt getResponse gt setRedirect Mage getU
  • PHP Web 应用程序 (Magento) 遭到黑客攻击;这段黑客代码有什么作用?

    我刚刚安装的 Magento 1 3 2 4 被黑了 你能告诉我这段代码的目的是什么吗 另外 如何阻止这种情况以及如何发现漏洞 谢谢 function net match network ip ip arr explode network
  • Magento:如何在 CMS 页面中包含 php 调用

    按照此页面的说明进行操作 http www magento cc how to use php on a cms page html http www magento cc how to use php on a cms page html
  • 使用按钮添加自定义折扣订单总计

    我的模块带有自定义折扣 没问题 配置 xml
  • 创建单个随机 Magento 优惠券

    我遇到了一些麻烦 我想要做的是每次有人订阅我们的时事通讯时 在 Magento 中自动生成一个随机优惠券代码 这张优惠券可减 10 美元 并且有exp 订阅后两周的日期 因此 我正在尝试编写一个简单的脚本 当提交 订阅我们的时事通讯 表单时
  • Magento:获取给定产品的购物车数量

    我使用这个代码 items Mage getModel checkout cart gt getQuote gt getAllItems items Mage getSingleton checkout session gt getQuot
  • 从 Magento 后端开始

    几天以来 我一直在研究 Magento 后端的行为 为了理解 我创建了一个新的网格来查看 bbdd 的表格 完成此网格后 我可以看到在尝试在 CMS 页面中添加小部件时出现 404 错误 调试我可以看到 如果我从自定义模块中注释掉该错误 错
  • 根据product_id获取magento产品的浏览次数

    我想在 Magento 的类别列表页面上显示查看计数 这些数据看起来过去可以通过 reports product collection 访问 但我找不到正确访问它的方法 我基本上想提供一个产品 ID 并获取返回给我的所述产品的观看次数 您可
  • Magento 以编程方式创建捆绑产品

    在哪里可以找到使用 PHP 创建 BundleProducts 的完整且有效的示例 我正在使用 Magento 1 7 谷歌只给我片段 EDIT 到目前为止我正在使用这段代码 但是保存会抛出异常 致命错误 在第 73 行对 app code

随机推荐

  • 带停止点的滑块

    我想创建一个有一些停止点的滑块 每当我单击任何项 目时 我希望滑块跳到该点并执行一些操作 我已经使用 jQuery UI 的滑块创建了滑块 这很简单 但我不完全知道如何添加这些停止点 是否有现成的库 或者我应该自己实现这个 如果是这样 你能
  • 如何使用 jQuery 测试元素是否驻留在 iFrame 中?

    如何使用 jQuery 测试元素是否驻留在 iFrame 中 如果驻留在 iFrame 中 如何选择该 iFrame 这样就可以了 var elementDocument your element prop ownerDocument va
  • 在 java ClassNotFoundException 中运行时加载类

    我在 java 运行时调用类时遇到问题 我基本上是在制作一个插件框架 它首先打开 plugin Plugins cfg 并将测试解析为映射 cfg 文件中的 EX 文本 1 我的插件 2 插件2 每个插件主类是 plugin 插件名称 ma
  • 纵向和横向之间切换

    我拍摄了两个视图 一个是纵向和横向 我想要切换旋转视图 我正在使用下面的代码 但它不起作用 我可能知道我哪里出了问题 因为我是iPhone开发的新手 我还没有实现任何东西在 ViewDidLoad 方法中 我也应该在那里实现任何东西吗 BO
  • 如何使用 Sprite Kit 减慢正在运行 SKAction followPath 的 SKSpriteNode 以获得慢动作效果?

    我基本上希望动作正在运行 然后在动作中间创建慢动作效果 然后将其从慢动作中取出 有人对如何做到这一点有任何好的反馈吗 我考虑过手动创建操作并使用更新方法 但我觉得这可能有点矫枉过正 我希望有一个更简单的解决方案 我的另一个想法是停止动作 然
  • 使用 CoreData 支持的 NSArrayController 在 NSTableView 中创建组行

    假设我在核心数据模型中存储了一堆 Article 对象 每篇文章都维护一个阅读进度属性 该属性表示用户已阅读了文章的多少 一旦用户完全阅读完该文章 该文章就会被标记为 已读 在此之前 它将被标记为 未读 现在我有一个绑定到 NSArrayC
  • 在 Android 活动上调用 finish() 并没有真正完成

    我正在打电话finish 但我的活动仍在继续 我有一个由主活动屏幕上的菜单调用的活动 在我的活动中onCreate 方法我有以下代码片段 Make sure there are some events in the list if theE
  • 我们可以在单元测试时检查 uitextfield 的验证吗?

    假设我们有一些验证ViewController 比如 vc1 对于UItextfield in shouldChangeCharactersInRange方法 因为用户只能输入数字 不能输入字母或其他特殊字符 我只是想知道在我们的XCTes
  • 将 Ruby 扩展方法添加到 Rails 3 的最佳实践?

    我有一个数组扩展方法 我想在我的Rails 3项目 它应该住在哪里 我有一个应用程序 类 我最初放置它 array extensions rb 并在我的 config application rb 中加载路径 config autoload
  • 从 Sinatra 访问标头

    我正在尝试访问 sinatra 中过滤器中的标头 我的请求包含标头 HTTP AUTH 但我无法访问它 我的过滤器是 before do halt 403 unless request HTTP AUTH test end 从我的机架测试来
  • Mongo 类不会在 Yii 控制台应用程序中自动加载

    我正在使用 Yii 和 mongodb YiiMongoDbSuite 扩展 并创建了一个控制台应用程序 但它不起作用并给出错误 include Mongo php 无法打开流 没有这样的文件或目录 在文件 var www yii fram
  • 如何从日志文件中制作 JMeter 输出图表?

    我需要生成与 JMeter 相同的图表 但来自我的应用程序 C VB 等 随时间变化的响应时间 https i stack imgur com qDJj9 png 响应时间分布 https i stack imgur com ujcy3 p
  • ASP.NET 解析来自 ajax 调用 javascript 日期的 DateTime 结果

    介绍 我有一个WebMethod在我的 ASP NET 页面上返回一个Person目的 其中一个字段是Birthday这是一个DateTime财产 网络方法 WebMethod public static Person GetPerson
  • 简单注入器:在基类中注入属性

    几个星期以来我一直在使用简易注射器 https simpleinjector org依赖注入容器 取得了巨大成功 我喜欢它的简单配置 但现在我有一个设计 我不知道如何配置 我有一个基类 其中派生出许多类型 并且我想将依赖项注入到基类的属性中
  • PowerShell将字符串拆分为二维数组

    TL DR 使用 PowerShell 我想首先用换行符 n 拆分文本字符串 将其存储到数组中 然后用逗号将这些数组条目拆分为二维数组 我在访问 或可能创建 第二维中的任何信息时遇到问题 INFO 我有以下字符串 存储为 services
  • 将另一个提交导入到我的存储库

    抱歉 新手问题 但是有没有办法将其他人提交 到他自己的存储库 导入到我的存储库 手动更改 900 多个文件将是一件困难的事情 您需要将对方的存储库添加为您的远程存储库 并获取其更改 git remote add matefork
  • Docker - Dockerfile 中使用 RUN 的 MySQL 命令(错误 2002)

    我正在使用 Docker 创建一个以 mysql 作为基础镜像的 dockerfile FROM mysql set root pass ENV MYSQL ROOT PASSWORD password update linux RUN a
  • 远程服务器返回错误:(407) 需要代理身份验证

    我将此代码与 NET 3 5 一起使用并收到错误 远程服务器返回错误 407 需要代理身份验证 using WebClient client new WebClient WebRequest DefaultWebProxy Credenti
  • 如何动态添加分页符到打印页面?

    打印页面上的内容很长 但是我们在打印时将文本的一些内容剪掉了 替代文本 http img694 imageshack us img694 6766 printpage jpg http img694 imageshack us img694
  • Magento - 根据环境加载local.xml

    我想要 3 个app etc local xml文件 将它们称为 local xml staging xml 和 live xml 我想根据我在 vhosts 或 htaccess 中设置的环境变量加载它们 这样我就可以拥有单独的数据库等