モジュールのインストールプロセスでモジュールの重量を減らす/増やす方法は?


8

1つのカスタムモジュールを開発していますが、モジュールをインストールするときにモジュールの重量を増やしたいと考えています。

どうすればこれを達成できますか?そうでなければ、モジュールの重みがどのテーブルに保存されているか誰かが知っていますか?

回答:


5

hook_module_implements_alter()モジュールの重量を変更するのではなく使用してください。

content_translation.moduleの実装例:

function content_translation_module_implements_alter(&$implementations, $hook) {
  switch ($hook) {

    // Move our hook_entity_type_alter() implementation to the end of the list.
    case 'entity_type_alter':
      $group = $implementations['content_translation'];
      unset($implementations['content_translation']);
      $implementations['content_translation'] = $group;
      break;

    // Move our hook_entity_bundle_info_alter() implementation to the top of the
    // list, so that any other hook implementation can rely on bundles being
    // correctly marked as translatable.
    case 'entity_bundle_info_alter':
      $group = $implementations['content_translation'];
      $implementations = [
        'content_translation' => $group,
      ] + $implementations;
      break;
  }
}

はい。私がやります。私の質問は、これらの値をdrupalデータベースのどこで確認できるかです。
user15837

2
あなたが上回ろうとしているモジュール使用しない限りhook_module_implements_alter()(実際に私に起こったのは、i18nモジュールの1つだと思います)。
wizonesolutions 2016年

5

このためのAPIが現在あります。

module_set_weight('your_module_name', 10);

Ivan Jarosが言ったように、フックを実装することもできます。これにより、よりきめ細かい制御が可能になります(たとえば、あるフックに対して最初に、別のフックに対して最後に、3番目の特定のモジュールの後に)。しかし、モジュールの重みも機能するはずです。


しかし、どちらが優先順位が高く、重みが高いのか、それとも低いのか?
RaisinBranCrunch

4
低が最初に来る:-10 ....- 1 .... 1 .... 10など
Berdir 2016年

4

インポート/エクスポート構成を使用する場合、core.extension.ymlファイル内のモジュールの重みを変更できます。モジュールの名前が重みの後に番号を付けます。


2
これは、リスト内のモジュールの順序も変更した場合にのみ機能します。それらは、モジュールの重量の昇順で並べる必要があります。
marcvangend

4

Modulesウェイトモジュールを使用できます。

場合によってはモジュールの実行順序を変更する必要があり、クエリを実行してシステムテーブルのモジュールの重みを変更するコードを作成する人もいれば、お気に入りのSQLクライアントに直接行ってレコードを直接変更する人もいます。このモジュールは、モジュールの重量を並べ替えるインターフェースを提供します。

開示:私はモジュールModules Weightのメンテナーです。


答えを乗っ取るのではなく、「実行順序を変更する必要がある場合がある」理由の例は何ですか?
Pierre.Vriens 2017年

@ Pierre.Vriensいい質問です、本当にわかりません:-O。コードが最初または最後に実行されることを確認する必要がある場合があると思います。これまでにこの問題が発生したことはありません
。Drupal8

1
私の場合、@ Pierre.Vriens、D8には依存性注入機能があります。これにより、カスタムモジュールのservices.ymlのすべてを変更できます。問題は、実際に優先度の高いもの(別名モジュールの重み)でオーバーライドする場合、つまり、変更するモジュールservices.ymlよりもカスタムモジュールが最初に実行される場合に発生します。したがって、後で実行されるようにカスタムモジュールを変更する必要があります。
kororo
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.