Jak stworzyć hak?

18

Jak mogę stworzyć własny hak (podobny do tego, który tworzy rdzeń Drupala) do wykorzystania przez inne moduły Drupala?

markdorison
źródło

Odpowiedzi:

20

Nie tworzysz haków. Użyć pomocnika funkcje, takie jak module_invoke_all(), module_invoke()lub drupal_alter()aby wywołać wszystkie funkcje pasujące oczekiwany wzorzec nazwy. Wywoływane funkcje zwykle można znaleźć za pomocą module_implements().

Nawet jeśli haki nie działają, najlepszą praktyką jest ich udokumentowanie MODULE.api.php, tworząc puste kody pośredniczące hook_NAME z komentarzami do dokumentacji .

Pierre Buyle
źródło
6
+1 na temat dokumentacji, czyli nowego standardu kodowania od Drupala 7 i wiele modułów contrib zaczęło go używać również dla D6. Zauważ, że zamiast pustej funkcji, jeszcze lepiej jest podać przykładową implementację pokazującą, co można zrobić z tym hakiem.
Berdir,
1
Zazwyczaj podajesz kod dla haka wymienionego w MODULE.api.php, jeśli istnieje rzeczywista implementacja tego haka.
kiamlaluno
0

Możesz także utworzyć hook, używając hook_trigger_info możesz utworzyć nowy hook, a w module musisz go zaimplementować. Na przykład załóżmy, że chcesz utworzyć archiwum węzłów i umieścić w nim stare węzły. Chcesz również uruchomić hak, gdy operacja archiwizacji zostanie zakończona. będzie coś takiego

function hook_trigger_info() {
    return array(
            'node' => array(
                    'archive_nodes' => array(
                        'label' => t('Archive old nodes'),
                    )
            )
    );
} 

Po zdefiniowaniu hooka , twój moduł jest odpowiedzialny za implementację hooka i akcji za pomocą module_invoke () lub module_invoke_all () .

Możesz włączyć triggermoduł, aby zobaczyć ten nowy zaczep pod zakładką węzła.

M ama D.
źródło