Magento版兼容

时间:2015-04-08 01:51:08

标签: magento

我需要能够在模块的config.xml中指定Magento版本兼容性:

<config>
    <modules>
        <MyCompany_MyModule>
            <version>0.9.0</version>
            <minimum_version>1.7</minimum_version>
        </MyCompany_MyModule>
    </modules>
    ...

这看起来不错吗?

2 个答案:

答案 0 :(得分:0)

因此,在简单的Magento中,config.xml中没有minimum_version标记可以实现这种功能。

  1. 如果您在Magento Connect上公开扩展,则可以指定扩展程序兼容的版本,
  2. 您可以使用某种事件来检查您正在使用的Magento版本,然后根据该版本激活您的扩展程序,
  3. 通过检查Magento版本,
  4. 简单地包装扩展函数调用

    我亲自使用了最后一步,而不是在检查版本时,而是在Magento管理系统配置中为扩展添加活动标志时。

答案 1 :(得分:0)

在一天结束时,我意识到我可以随心所欲地放置我需要的东西。据我所知,目前还没有Magento的最佳实践。我的问题来自于需要使用modman从Github部署模块列表。这里有一些hacky代码,这个xml最终被使用了:

... //after cloning the repositories, for each module:
$modules = glob('.modman/$moduleName/app/etc/modules/*.xml');
$filename = $modules[0];
$xmlString = file_get_contents($filename, FILE_TEXT);
$xml = simplexml_load_string($xmlString);
$jsonStr = json_encode($xml);
$obj = json_decode($jsonStr);
$modules = $obj->modules;
foreach ($modules as $key=>$module){}
$fullName = explode('_', $key);
$namespace = $fullName[0];
$codePool = $module->codePool;
$channel = $codePool;

$configFile = ".modman/$moduleName/app/code/$channel/$namespace/$moduleName/etc/config.xml";
$configXml = file_get_contents($configFile, FILE_TEXT);
$xml = simplexml_load_string($configXml);
$jsonStr = json_encode($xml);
$obj = json_decode($jsonStr);
$modules = $obj->modules;
$module = reset($modules);

if (isset($module->minimum_version)) {

    $minimumVersion = $module->minimum_version;

    $magentoVersion = Mage::getVersion();

    $tooOld = version_compare($magentoVersion, $minimumVersion, '<');

    if ($tooOld < 0) {

        $exec = "modman remove $name";
        exec($exec, $output);
    }
}

完成。