是否可以为站点的live,staging和dev版本提供不同的config.xml文件。
我认为应该有一个live.xml,local.xml和staging.xml,这些应该设置一次,然后通过htaccess环境变量或其他东西控制
这可能吗?
答案 0 :(得分:5)
不,没有任何东西可以支持Magento的开箱即用,并且没有我知道的模块提供此功能。
如果您愿意,可以实施此版本。通过Mage_Core_Model_Config
类加载的所有Magento的配置文件都是(或者应该是,不要让我这么做)。
#File: app/code/core/Mage/Core/Model/Config.php
public function loadModulesConfiguration($fileName, $mergeToObject = null, $mergeModel=null)
{
$disableLocalModules = !$this->_canUseLocalModules();
if ($mergeToObject === null) {
$mergeToObject = clone $this->_prototype;
$mergeToObject->loadString('<config/>');
}
if ($mergeModel === null) {
$mergeModel = clone $this->_prototype;
}
$modules = $this->getNode('modules')->children();
foreach ($modules as $modName=>$module) {
if ($module->is('active')) {
if ($disableLocalModules && ('local' === (string)$module->codePool)) {
continue;
}
$configFile = $this->getModuleDir('etc', $modName).DS.$fileName;
if ($mergeModel->loadFile($configFile)) {
$mergeToObject->extend($mergeModel, true);
}
}
}
return $mergeToObject;
}
您可以为此模型创建一个类重写,它将根据环境更改$ filename,然后加载相应的配置文件。
虽然这是一个有趣的想法,但我认为这不是一个好主意。应该在部署级别处理环境差异,并且模块的config.xml
文件中不应包含任何特定于环境的信息。环境特定信息保存在一个位置
app/etc/local.xml
您的构建/部署系统应根据您正在部署的环境修改local.xml。