Làm thế nào để đối phó với các xung đột mô-đun (chống phụ thuộc vào thế giới)?


7

Tôi có một mô-đun đặc biệt không hoạt động với mô-đun khác. Tôi muốn biết liệu có cách nào để kiểm tra xem mô-đun đó có được bật hay không và hủy cài đặt chẳng hạn hoặc làm mờ hộp cài đặt để mô-đun của tôi chỉ có thể được cài đặt nếu mô-đun kia bị vô hiệu hóa.

Nó giống như phụ thuộc nghịch đảo!

Có cách nào để làm điều này đúng trong Drupal không?

Câu trả lời:


8

Mô-đun chỉ cần thực hiện hook numquirements () ; một yêu cầu có thể là một mô-đun không được cài đặt và nếu mô-đun trả về lỗi từ hook_requirements()đó, thì nó sẽ không được cài đặt.

Mô-đun nên thực hiện mã tương tự như sau:

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

Bạn có thể sử dụng hook_requirementscho việc này. Bạn đặc biệt cần kiểm tra $phase == 'install', và sau đó trả về mảng thích hợp chứa REQUIREMENT_ERROR.

Các mô-đun SimpleTest cho Drupal 6 có một ví dụ tốt về hủy cài đặt nếu điều kiện nhất định không được đáp ứng.

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.