Inne odpowiedzi są świetne, dokładne, szczegółowe, ale nie jestem pewien, czy są to „proste słowa” wyjaśniające gołe kości koncepcji, której szukał pytający.
Myślę o hakach jako punkcie, w którym kod zatrzymuje się i krzyczy: „ Czy ktoś jeszcze ma coś do dodania? ”. Każdy moduł może mieć funkcję, która odpowiada na to i jest wyzwalana odpowiednimi danymi przekazywanymi do niego w tym punkcie kodu.
Dobrym prostym przykładem jest hook_node_delete () . Każdy moduł może go użyć, aby za każdym razem usuwać węzeł. Dokumenty mówią ci, że ten haczyk przekazuje moduł obiektu usuniętego węzła do pracy i przedstawia inne przydatne informacje, takie jak dokładny czas jego wywołania (np. Że jest to zanim dane węzła zostaną faktycznie usunięte z bazy danych) i gdzie w kodzie Drupala nazywa się hak (który może być więcej niż jednym miejscem).
Możesz zbadać, jakie haki istnieją i dowiedzieć się, jakie dane są do nich przekazywane, badając rzeczy zaczynające się od „hook_” w interfejsie Drupal .
Haki działają według konwencji nazw: hook_node_delete
na naszym przykładzie, gdy proces usuwania węzła osiąga punkt, w którym wywoływany jest hak, dla każdego modułu z funkcją taką jak ta, w [modulename]_node_delete()
której słowo hook w nazwie haka jest zastępowane nazwą modułu (np. my_amazing_module_node_delete()
), wywoływane są te funkcje.
Dlaczego? Tak więc każdy moduł może zrobić wszystko w tych kluczowych punktach: na przykład możesz spojrzeć na usunięty węzeł i robić rzeczy, które spełniają określony warunek (powiedz, napisz do administratora lub uruchom jakiś długi proces).
Niektóre zaczepy pozwalają zmieniać rzeczy, które zostały wygenerowane tuż przed ich przetworzeniem. Na przykład hook_menu_alter () przekazuje ci bieżące pozycje menu wygenerowane przez system. Każdy moduł może zdefiniować funkcję some_modulename_menu_alter () i spojrzeć na nich, opcjonalnie je zmienić (usunąć niektóre, dodać niektóre, posortować je ...) i przekazać ponownie zmienione menu.
To proste, naprawdę potężne i stanowi sedno tego, jak Drupal działa jako system modułowy. Implementacje haków są sercem większości modułów Drupal.
Przeglądając kod modułu Drupal, możesz zauważyć, które funkcje pochodzą z haków (w przeciwieństwie do funkcji, które są po prostu wywoływane z samego kodu modułu), ponieważ społeczność Drupal egzekwuje konwencję, w której każda implementacja haka ma komentarz przed nim w ten sposób (zwróć uwagę na bit „Implements hook _...”):
/**
* Implements hook_some_hook().
*
* Some descriptive summary of what this does
*/
function my_amazing_module_some_hook() {
Niektóre moduły działające jako interfejsy API definiują własne zaczepy. Na przykład Widoki definiują wiele zaczepów, które pozwalają dodawać, odczytywać i edytować dane w różnych punktach procesu tworzenia lub wyświetlania widoku. Informacje o zaczepach utworzonych w niestandardowych modułach można znaleźć z dwóch miejsc (zakładając, że moduł jest zgodny z konwencjami itp.):
Bootstrapping jest, jak wyjaśnili inni, w zasadzie uruchamianiem - nie powielę innych dobrych jasnych wyjaśnień.