Làm cách nào tôi có thể làm cho mô-đun hoàn toàn mới của mình phụ thuộc vào phiên bản tối thiểu của Drupal 7 cần thiết để nó hoạt động tốt?


10

Tôi đang phát triển một mô-đun hoàn toàn mới (chưa có trang web nào sử dụng nó). Nó đòi hỏi một phiên bản Drupal cụ thể, vì nó sử dụng hook_taxonomy_term_view()hook được giới thiệu trong phiên bản lõi Drupal 7.17 .

Tôi muốn tránh mô-đun của mình được kích hoạt trên một trang web bằng cách sử dụng, ví dụ, Drupal 7.16 hoặc bất kỳ phiên bản lõi Drupal nào trước đó. Các phiên bản cao hơn của Drupal, trên 7.17, sẽ ổn.

Câu hỏi của tôi : Làm cách nào tôi có thể làm cho mô-đun của mình phụ thuộc vào phiên bản Drupal 7.17 đó, đây là mức tối thiểu cho mô-đun của tôi?

Lưu ý: Tôi không cần (phải lo lắng) một giải pháp cho các trang web đã cài đặt mô-đun. Vì vậy, không cần thiết phải vô hiệu hóa bằng cách nào đó trong các phiên bản Drupal trước 7.17 như vậy.


Câu hỏi được gắn thẻ hook vì đó là về hook tôi nên sử dụng trong mã của mình. hook không có nghĩa là tôi đang tìm kiếm một hook tôi có thể sử dụng; Tôi sẵn sàng cho bất kỳ giải pháp nào cho phép tôi tránh mô-đun được cài đặt trên một trang web không sử dụng Drupal 7.17 hoặc cao hơn.
kiamlaluno

Bạn có thể yêu cầu một phiên bản nhỏ của một số mô-đun khác dependencies[] = mymodule (1.12)nhưng có vẻ như điều này không hoạt động cho lõi.
AyeshK

@AyeshK Uh! Bây giờ, điều đó thật thú vị, nếu bạn có thể chỉ cho tôi một mô-đun lõi Drupal luôn được bật.
kiamlaluno

Tôi đã thử nó dependencies[] = taxonomy (>7.17)và một số số phiên bản có thể khác nhưng không hoạt động.
AyeshK

Câu trả lời:


11

Thủ thuật, rõ ràng, là sử dụng mô-đun hệ thống như:

dependencies[] = system (>=7.17)

4
Đây là một trong những chính xác. Nguồn: dww và tôi đã viết trình kiểm tra phụ thuộc theo phiên bản. Tôi đã viết blog về điều này tại drupal4hu.com/node/274 và bây giờ được thêm vào trang cẩm nang có liên quan tại drupal.org/node/542202 .

7

hook_requirements() tồn tại cho chính xác loại mục đích đó.

Kiểm tra các yêu cầu cài đặt và làm báo cáo trạng thái.

Bạn có thể kiểm tra $phasetham số để xác định xem mô-đun đang được cài đặt hay chưa, kiểm tra phiên bản Drupal hiện tại so với phiên bản bạn yêu cầu và trả về mức độ nghiêm trọng REQUIREMENT_ERROR. Điều đó sẽ ngăn mô-đun được cài đặt cho đến khi yêu cầu được đáp ứng.

Tài liệu này khá kỹ lưỡng, một điều đáng nói ở đây là hook cần được thực hiện trong tệp .install của mô-đun.


Đây không phải là câu trả lời đúng Tôi không biết tại sao nó lại được đánh giá cao như vậy.

@chx Tôi sẽ tin lời bạn, nhưng trong trường hợp đó, mô tả chức năng "Kiểm tra yêu cầu cài đặt và thực hiện báo cáo trạng thái." Có phần nào gây hiểu lầm phải không? Sau tất cả, chúng tôi đang nói cụ thể về việc kiểm tra các yêu cầu mô-đun khi cài đặt :)
Clive

1
@Chapabu Không theo tài liệu :) Nó nói về các mô-đun cụ thể, và về cơ bản nói rằng hãy sử dụng móc đó để quay lại REQUIREMENT_ERRORđể đảm bảo mô-đun không được cài đặt nếu không đạt yêu cầu. Tôi đã giả định kiểm tra phiên bản Drupal là trường hợp sử dụng hợp lệ (tài liệu không đề cập đến việc không làm điều đó) nhưng tôi đoán tôi đã bỏ lỡ điều gì đó. Nó có thể chỉ là một thực hành tồi tệ hoặc một cái gì đó tôi không biết
Clive

1
@Clive Weird, dunno nơi tôi đã nhận được điều đó từ đó..maybe D8 chỉ nên là một bản nâng cấp tài liệu ;-)
Chapabu

1
@chx Bạn sẽ phải bào chữa cho sự thiếu hiểu biết của mình, chưa bao giờ thực hiện việc này trước đây ... vấn đề có đi ngược lại với D8 và sau đó được đưa vào không? Theo ý kiến ​​của bạn, toàn bộ văn bản cần phải thay đổi hay chỉ cần một lưu ý đề cập đến việc không sử dụng hook này để kiểm tra các phiên bản mô-đun / lõi, chỉ yêu cầu thư viện, v.v. (có liên kết đến các tài liệu bạn đã đề cập)? Cảm ơn
Clive

2

Bạn có thể sử dụng hook_enables

Điều này sẽ kích hoạt sau khi mô-đun được cài đặt. Bạn có thể kiểm tra phiên bản drupal được cài đặt và nếu đó không phải là phiên bản chính xác thì hãy sử dụng module_disable và đưa ra thông báo lỗi cần thiết.

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.