Làm thế nào để giảm / tăng trọng lượng của mô-đun trong quá trình cài đặt mô-đun?


8

Tôi đang phát triển một mô-đun tùy chỉnh và tôi muốn tăng trọng lượng mô-đun của mình khi mô-đun được cài đặt.

Làm thế nào tôi có thể đạt được điều này? Mặt khác, có ai biết trọng lượng của mô-đun được lưu trữ trong bảng nào không?

Câu trả lời:


5

Sử dụng hook_module_implements_alter()thay vì thay đổi trọng lượng mô-đun.

Mẫu triển khai từ 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;
  }
}

Được chứ. Tôi sẽ làm việc đó. Câu hỏi của tôi là nơi tôi có thể thấy các giá trị này trong cơ sở dữ liệu drupal?.
dùng15837

2
Trừ khi mô-đun bạn đang cố gắng vượt trội hơn cũng sử dụng hook_module_implements_alter()(thực tế đã xảy ra với tôi, tôi nghĩ với một trong các mô-đun i18n).
wizonesolutions

5

Hiện tại đã có API cho việc này:

module_set_weight('your_module_name', 10);

Bạn cũng có thể thực hiện hook như Ivan Jaros đã nói, cho phép kiểm soát chi tiết hơn (ví dụ đầu tiên cho một hook, cuối cùng cho một hook khác, sau một mô-đun cụ thể cho thứ ba). Nhưng trọng lượng mô-đun nên làm việc quá.


Nhưng cái nào có mức độ ưu tiên cao hơn, trọng lượng cao hay thấp?
RaisinBranCrunch

4
Thấp đến trước: -10 ....- 1 .... 1 .... 10 và cứ thế.
Berdir

4

Nếu bạn sử dụng cấu hình nhập / xuất, bạn có thể thay đổi trọng lượng của mô-đun trong core.extension.ymltệp, số sau tên của mô-đun là trọng số.


2
Điều này chỉ hoạt động nếu bạn cũng thay đổi thứ tự của các mô-đun trong danh sách. Chúng nên được sắp xếp theo trọng lượng mô-đun, tăng dần.
marcvangend

4

Bạn có thể sử dụng mô-đun trọng lượng Mô-đun:

Đôi khi chúng ta cần sửa đổi thứ tự thực hiện mô-đun và một số người có thể viết mã thực thi truy vấn để sửa đổi trọng số của mô-đun trong bảng hệ thống, một số người có thể đi thẳng đến máy khách SQL yêu thích của mình và sửa đổi bản ghi trực tiếp. Mô-đun này cung cấp một giao diện để sắp xếp lại trọng lượng mô-đun.

Tiết lộ: Tôi là người duy trì mô- đun Trọng lượng mô- đun .


Không chiếm đoạt câu trả lời của bạn, nhưng một số ví dụ về lý do tại sao "đôi khi chúng ta cần sửa đổi thứ tự thực hiện"?
Pierre.Vriens

@ Pierre.Vriens Câu hỏi hay, tôi thực sự không biết: -O. Tôi nghĩ rằng đôi khi bạn cần chắc chắn rằng mã của bạn là lần đầu tiên hoặc lần thực hiện cuối cùng. Tôi chưa bao giờ gặp vấn đề này trước đây, tôi chỉ thấy mô-đun trong Drupal 7 không có phiên bản Drupal 8 và tôi khởi động cổng ;-)
Adrian Cid Almaguer

1
@ Pierre.Vriens trong trường hợp của tôi, D8 ​​có tính năng Dependency Injection, điều này cho phép bạn thay đổi bất cứ điều gì trong services.yml trong mô-đun tùy chỉnh của bạn. Vấn đề phát sinh khi những gì bạn muốn ghi đè thực sự ở mức ưu tiên cao hơn (hay còn gọi là trọng lượng mô-đun), ý tôi là khi mô-đun tùy chỉnh của bạn được thực thi trước so với mô-đun dịch vụ.yml bạn muốn thay đổi. Do đó, bạn cần thay đổi mô-đun tùy chỉnh của mình để được thực thi sau.
kororo
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.