2015-04-08 2 views
3

мне нужно, чтобы иметь возможность указать версию совместимости Magento в config.xml модуля:Magento версия совместима с

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

ли это выглядит правильно?

ответ

0

В конце дня я понял, что могу поместить то, что мне нужно, когда захочу. Насколько мне известно, лучшей практики Magento нет. Мой вопрос возник из-за необходимости использовать modman для развертывания списка модулей из Github. Вот какой хакерский код, в котором этот 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); 
    } 
} 

Выполнено.

0

Так что в простой Magento нет тега minimum_version в файле config.xml есть несколько возможностей для достижения такого рода функций.

  1. Если вы делаете расширение общественность на Magento Connect вы можете указать версию, что расширение совместимо,
  2. Вы можете использовать какое-то событие, чтобы проверить, какую версию Magento вы используете, и затем активировать ваш расширение на его основе,
  3. Простой обертки вашей функции расширения вызовов с проверкой на Magento версию

Я лично использовал последний шаг сам, а не при проверке версии, но при добавлении активного флага в Magento Конфигурация системы администратора для расширения рений.

Смежные вопросы