Dostosowanie wagi modułu: na jakie zagrożenia i rzeczy należy uważać?


14

Dzisiaj zmieniłem ciężar własnego niestandardowego modułu, aby zmienić metodę wykonywania hooków (hook_form_alter). Zmieniłem wagę na wartość o 1 większą niż waga drugiego modułu. Wydawało się to najbezpieczniejsze, aby nadać mu „losową” wagę 100. Oryginalny moduł jest modułem podstawowym (tłumaczenie), więc mam nadzieję, że niczego nie zepsułem.

Podczas dostosowywania wagi modułu w celu zmiany kolejności wykonywania zaczepów, na co należy zwracać uwagę i jakie jest ryzyko?

Co mogę wymyślić: niepożądane zachowanie w wyniku wysokiego sprzężenia.

Odpowiedzi:


10

Cóż, nie ma ogólnej odpowiedzi na to pytanie, to naprawdę zależy od modułów. Niektóre rzeczy, które wziąłbym pod uwagę (w Drupal 6):

  • hook_boot jest wywoływany podczas ładowania modułów; więc uwzględniono tylko moduły, które są lżejsze niż Ty. Jeśli korzystasz z kodu z innego modułu, który jest cięższy od ciebie, upewnij się, że dołączasz go ręcznie.

  • Jeśli moduł ma domyślnie wagę inną niż 0, oznacza to, że moduł specjalnie ustawił tę wagę. Sprawdź plik .install tego modułu, ponieważ najprawdopodobniej jest tam, gdzie ustawiono wagę - i przy odrobinie szczęścia pojawi się komentarz wyjaśniający dlaczego! (może to być prawda, nawet jeśli waga wynosi zero)

  • Moduły, które ustawiają bardzo niską lub bardzo wysoką wagę, zwykle mają ku temu dobry powód ( muszą działać przed / po wszystkim innym). Zwykle robią to moduły programistyczne, choć inni też mogą. Zachowaj te moduły jako pierwsze / ostatnie, chyba że masz ku temu dobry powód.

  • Spójrz na zależności modułu (te, od których moduł zależy, i te, które zależą od tego modułu). Idealnie utrzymuj te moduły w tej samej kolejności. Jeśli musisz zmienić kolejność, jedynym sposobem na zrozumienie konsekwencji jest spojrzenie na kod.

  • Użyj rozumu. Informacje dodane przez moduł (np. Do węzła przy obciążeniu węzła) nie będą dostępne dla modułów lżejszych niż ten.


1
Jakieś różnice dla Drupala 7?
DrCord

3

Szczerze mówiąc, nie sądzę, aby na to była ogólna odpowiedź. To, co się stanie, gdy dostosujesz wagę modułu, zależy w dużym stopniu od zaangażowanych modułów, a jeśli zmienisz wagi zbyt wielu modułów, wyobrażam sobie, że możesz skończyć z nieprzewidywalnymi wynikami.

Biorąc to pod uwagę, jeśli chcesz zminimalizować ryzyko, zastanów się dokładnie, co robi Twój moduł. Jakie dane modyfikujesz? Czy dokonujesz poważnych zmian w strukturach danych, czy bardziej kosmetyczny? Wydaje mi się, że największym ryzykiem byłaby nieoczekiwana zmiana istniejących danych. Jeśli jesteś ostrożny i oszczędnie dostosowujesz wagi modułów, nie powinieneś mieć zbyt wielu problemów.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.