モジュールの競合(「反依存」)に対処するには?


7

特に別のモジュールで動作しないモジュールがあります。他のモジュールが無効になっている場合にのみモジュールをインストールできるように、そのモジュールが有効かどうかを確認してインストールを中止する方法や、インストールボックスをグレー表示する方法があるかどうかを知りたいです。

それは逆依存のようなものです!

Drupalでこれを正しく行う方法はありますか?

回答:


8

モジュールはhook_requirements()を実装する必要があるだけです。要件は、モジュールがインストールされていないことであり、モジュールがからエラーを返した場合、モジュールはhook_requirements()インストールされません。

モジュールは、次のようなコードを実装する必要があります。

function mymodule_requirements($phase) {
  $requirements = array();
  // Ensure translations don't break at install time
  $t = get_t();

  if ($phase == 'install') {
    if (module_exists('other_module')) {
      $requirements['mymodule'] = array(
        'title' => $t('My module'), 
        'value' => $t('My module is not compatible with Other module.'), 
        'severity' => REQUIREMENT_ERROR, 
      );
    }
  }

  return $requirements;
}

5

hook_requirementsこれに使用できます。特にを確認し$phase == 'install'、を含む適切な配列を返す必要がありREQUIREMENT_ERRORます。

Drupal 6 のSimpletestモジュールは、特定の条件が満たされない場合にインストールを中止する良い例です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.