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.
dependencies[] = mymodule (1.12)
ale wygląda na to, że to nie działa dla rdzenia.dependencies[] = taxonomy (>7.17)
innymi numerami wersji, ale nie działałem.Odpowiedzi:
Najwyraźniej sztuczka polega na użyciu modułu systemowego, takiego jak:
źródło
hook_requirements()
istnieje właśnie w tym celu.Możesz sprawdzić
$phase
parametr, 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.
źródło
REQUIREMENT_ERROR
aby 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 wiemMoż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.
źródło