Answers:
有两种相对较新的技术可以做到这一点:
使用modman,这样您就可以自己控制针对每种环境部署的内容。这意味着您modman deploy [name-of-dev-extension]
只能在开发环境中运行。
使用Magento的作曲家不同composer.json
为不同的环境场景。甚至更简单的方法是将这些扩展指定为dev-modules,然后使用--require-dev
开发计算机上的开关安装项目。
通常可以使用配置标志方便地禁用这些功能,因此它们在技术上处于活动状态,但什么也不做。如果在app/etc/local.xml
实时系统中将此标志设置为false ,则应该没问题。
local.xml
文件保存在存储库中,否则这是一个很好的解决方案。可能是这种情况。
local.xml
通常不在回购中
请参阅最近在柏林的Magento Hackathon创建的MageTrashApp。允许您通过管理面板停用模块。
一种简单的方法是,在/ etc / modules中禁用该模块,推送该模块,在本地忽略该文件,然后再次启用它。
我认为处理此问题的最佳方法是将所有这些模块保留在本地codePool中,并在local.xml中使用此行停用所有本地模块:
<disable_local_modules>true</disable_local_modules>
或者,您可以在实时环境的后端执行“禁用模块输出”。(系统->配置->高级)。但是,这并不完全禁用该模块。但是,也许只是想要隐藏它就足够了。
我唯一想到的另一件事就是编写一些可以实现此目标的代码。只需检查它是否处于开发人员模式(Mage::getIsDeveloperMode()
),然后禁用模块即可。我在这里找到了实现此目标的更多详细信息:https : //stackoverflow.com/questions/6520634/magento-how-to-disable-module-programmatically
local
模块将迫使您将所有其他模块从local
codePool移入community
,也将在以后的所有扩展中使用。如您所说,禁用模块输出仍然会使扩展程序运行减慢您的存储速度。并且第三个解决方案将需要使用扩展名更新将被覆盖的修改。
Erik Hansen在Imagine 2011会议上有一张幻灯片。他在幻灯片中声明了以下代码(对于开发人员模式)
# File : index.php
if(preg_match('/^stage\.|\.dev$/', $_SERVER['HTTP_HOST'])) {
$_SERVER['MAGE_IS_DEVELOPER_MODE'] = true;
}
这是Erik基于子域启用的设置,您可以自己对其进行自定义。