即使缓存了模块,也要从配置中删除模块

时间:2012-08-09 15:37:39

标签: php magento caching

我有一个网站,我在magento中运行多个商店,需要在每个商店级别禁用模块。

此处的第二个答案Magento: Disable module for any particular store确实有效,但是需要关闭布局缓存。这似乎会大大增加服务器负载。

我在阿兰风暴中找到了这篇文章,似乎有用http://alanstorm.com/magento_config_a_critique_and_caching

有没有办法可以剥离特定的xml片段,即使它是从缓存中加载的?

无论它是如何实现的,这似乎都是hacky,但是大多数扩展编写者在构建扩展时似乎并未将多个网站/商店考虑在内。能够完全禁用每个商店的模块并仍允许布局缓存正常运行将是一件好事。

1 个答案:

答案 0 :(得分:0)

好的,所以我想我想出了这个。

在/app/code/local/Mage/Core/Model/Config.php(原文副本)。

   public function loadModulesCache()
{
    if (Mage::isInstalled(array('etc_dir' => $this->getOptions()->getEtcDir()))) {
        if ($this->_canUseCacheForInit()) {
            Varien_Profiler::start('mage::app::init::config::load_cache');
            $loaded = $this->loadCache();
            Varien_Profiler::stop('mage::app::init::config::load_cache');
            if ($loaded) {


               ***PUT CODE HERE TO EDIT $this->_xml***
               Just remove the nodes which should be disabled.


                $this->_useCache = true;
                return true;
            }
        }
    }
    return false;
}

我不知道这是不是最好的方法,或者是否应该这样做,但我现在要测试,看看是否有其他错误弹出