Jak mogę uzależnić mój nowy moduł od minimalnej wersji Drupala 7, która jest wymagana, aby działała poprawnie?

10

Rozwijam nowy moduł (nie ma jeszcze strony, która go używa). Wymaga konkretnej wersji Drupala, ponieważ używa hook_taxonomy_term_view()haka, który został wprowadzony w podstawowej wersji Drupala 7.17 .

Chcę uniknąć włączania mojego modułu na stronie przy użyciu na przykład Drupal 7.16 lub jakichkolwiek wcześniejszych wersji rdzenia Drupal. Wyższe wersje Drupala, powyżej 7.17, powinny być w porządku.

Moje pytanie : Jak mogę uzależnić mój moduł od wersji Drupal 7.17, co stanowi minimum dla mojego modułu?

Uwaga: Nie potrzebuję (nie muszę się martwić) rozwiązania dla stron, w których moduł jest już zainstalowany. Więc nie ma potrzeby, aby była jakoś wyłączana w takich wersjach Drupala sprzed 7.17.

kiamlaluno
źródło
Pytanie jest oznaczone jako hooks, ponieważ dotyczy haka, którego powinienem użyć w swoim kodzie. haczyki nie oznaczają, że szukam haka, którego mógłbym użyć; Jestem otwarty na wszelkie rozwiązania, które pozwalają mi uniknąć instalowania modułu na stronie, która nie używa Drupal 7.17 lub nowszej wersji.
kiamlaluno
Możesz wymagać mniejszej wersji jakiegoś innego modułu, dependencies[] = mymodule (1.12)ale wygląda na to, że to nie działa dla rdzenia.
AyeshK
@AyeshK Uh! To może być interesujące, jeśli możesz wskazać mi moduł podstawowy Drupal, który jest zawsze włączony.
kiamlaluno
Próbowałem z dependencies[] = taxonomy (>7.17)innymi numerami wersji, ale nie działałem.
AyeshK

Odpowiedzi:

11

Najwyraźniej sztuczka polega na użyciu modułu systemowego, takiego jak:

dependencies[] = system (>=7.17)
tsvenson
źródło
4
To jest poprawne. Źródło: dww i napisałem wersję sprawdzania zależności. Napisałem o tym na blogu na drupal4hu.com/node/274, a teraz dodałem również do odpowiedniej strony podręcznika na drupal.org/node/542202 .
7

hook_requirements() istnieje właśnie w tym celu.

Sprawdź wymagania instalacyjne i wykonaj raportowanie statusu.

Możesz sprawdzić $phaseparametr, aby ustalić, czy moduł jest instalowany, sprawdzić bieżącą wersję Drupala pod kątem wymaganej wersji i zwrócić ważność REQUIREMENT_ERROR. Zapobiegnie to instalacji modułu do momentu spełnienia wymagania.

Dokumentacja jest dość dokładna, jedną rzeczą wartą wspomnienia tutaj jest to, że zaczep musi zostać zaimplementowany w pliku .install modułu.

Clive
źródło
To nie jest właściwa odpowiedź. Nie mam pojęcia, dlaczego jest tak wysoko oceniany.
@chx Uwierzę za to, ale w takim przypadku opis funkcji „Sprawdź wymagania instalacyjne i zrób raport stanu”. jest nieco mylące, prawda? W końcu mówimy konkretnie o sprawdzaniu wymagań modułu podczas instalacji :)
Clive
1
@Chapabu Nie zgodnie z dokumentami :) Mówi konkretnie o modułach i w zasadzie mówi, aby użyć tego haka do powrotu, REQUIREMENT_ERRORaby upewnić się, że moduł nie zostanie zainstalowany, jeśli nie spełni wymagań. Założyłem, że sprawdzenie wersji Drupala było prawidłowym przypadkiem użycia (doktorzy nie wspominają, że tego nie robią), ale chyba coś przeoczyłem. To może być po prostu zła praktyka lub coś, czego nie wiem
Clive
1
@Clive Weird, dunno, skąd to dostałem ... może D8 powinno być tylko uaktualnieniem dokumentacji ;-)
Chapabu
1
@chx Będziesz musiał usprawiedliwić moją ignorancję, nigdy wcześniej tego nie robił ... czy problem jest sprzeczny z D8, a następnie zostanie przeniesiony? Czy Twoim zdaniem cały tekst musi się zmienić, czy wystarczy tylko wspomnieć, aby nie używać tego haka do sprawdzania wersji modułu / rdzenia, tylko wymagań dotyczących biblioteki itp. (Z linkiem do wspomnianych dokumentów)? Dzięki
Clive
2

Możesz użyć hook_enabled

Zadziałałby po zainstalowaniu modułu. Możesz sprawdzić wersję zainstalowanego drupala, a jeśli nie jest to poprawna wersja, użyj modułu_disable i podaj wymagany komunikat o błędzie.

Mohammed Shameem
źródło