Du hast ein bisschen davon verpasst ... es ist template_process_/ template_preprocess_. Das ist der Unterschied - eine ist eine Themenfunktion, eine ist eine Prozess- / Vorverarbeitungsfunktion für das Thema
Clive
Also haben sie das Wort "Vorlage" anstelle von "Thema" verwendet, um Namenskonflikte zu vermeiden?
halten
1
Ich bin mir nicht sicher, das ist eine gute Frage! Ich kann die Motivation für die Benennung dieser Funktionen nicht kommentieren (sie gehen einige Drupal-Versionen vor meiner Zeit mit dem CMS zurück), aber ich denke, es ist ein Rückschritt von Drupal 5/6 php_template-Konventionen oder ähnlichem. Ich habe nie gefragt, warum sie es getan haben, habe nur gelernt, welches wann und wo verwendet werden soll :)
Clive
Was es etwas verwirrender macht, ist, dass Sie für jedes Modul, das Sie schreiben, MYMODULE_anstelle template_oder theme_in einem benutzerdefinierten Modul verwenden können. Im Wesentlichen können Sie beide wie hook_in einem Modul behandeln. Das habe ich nicht gut im Griff. Ich denke, ich muss die Antwort von @ kiamlaluno noch ein oder zwei Mal lesen. Interessante Frage.
CDMO
Antworten:
3
Die Funktionen, deren Name mit theme_ beginnt, sind Theme-Hooks, während die Funktionen, deren Name mit template_ beginnt, Vorverarbeitungs- und Prozessfunktionen sind, die von dem Modul implementiert werden, das den relativen Theme-Hook implementiert.
Zum Beispiel ist theme_image () ein Theme-Hook, der ein Bild rendert. template_preprocess_node () ist die vom Node-Modul implementierte Vorverarbeitungsfunktion, die das Modul implementiert, das den Node- Theme-Hook implementiert . (Siehe die ersten Codezeilen von node_theme () , die vom Node-Modul durchgeführte Implementierung von hook_theme () .) Es gibt andere Module, die eine Vorverarbeitungsfunktion für den Knoten- Theme- Hook implementieren können , aber für diese Module wird diese Vorverarbeitungsfunktion benannt MYMODULE_preprocess_node(). nicht template_preprocess_node().
Ein Thema kann sowohl einen Themen-Hook (siehe bartik_menu_tree () ) als auch eine Vorverarbeitungsfunktion (siehe bartik_preprocess_node () ) implementieren . Der Unterschied besteht darin, dass bartik_menu_tree()die Standardimplementierung ( theme_menu_tree () ) bartik_preprocess_node()überschrieben wird template_preprocess_node(), wenn das aktuelle Thema das Bartik-Thema ist, während es nicht überschreibt , sondern danach ausgeführt wird. (Siehe Dokumentation zu Thema () .)
Bei der Verwendung von zwei Präfixen besteht der Grund darin, den Zweck der Funktion zu dokumentieren. Selbst wenn theme_ in beiden Fällen verwendet würde, wäre der Unterschied zwischen theme_image()und theme_preprocess_node()immer noch klar, aber Sie müssten das folgende Thema_ lesen. Bei der aktuellen Implementierung lesen Sie nur das erste Wort des Funktionsnamens.
template_process_
/template_preprocess_
. Das ist der Unterschied - eine ist eine Themenfunktion, eine ist eine Prozess- / Vorverarbeitungsfunktion für das ThemaMYMODULE_
anstelletemplate_
odertheme_
in einem benutzerdefinierten Modul verwenden können. Im Wesentlichen können Sie beide wiehook_
in einem Modul behandeln. Das habe ich nicht gut im Griff. Ich denke, ich muss die Antwort von @ kiamlaluno noch ein oder zwei Mal lesen. Interessante Frage.Antworten:
Die Funktionen, deren Name mit theme_ beginnt, sind Theme-Hooks, während die Funktionen, deren Name mit template_ beginnt, Vorverarbeitungs- und Prozessfunktionen sind, die von dem Modul implementiert werden, das den relativen Theme-Hook implementiert.
Zum Beispiel ist theme_image () ein Theme-Hook, der ein Bild rendert. template_preprocess_node () ist die vom Node-Modul implementierte Vorverarbeitungsfunktion, die das Modul implementiert, das den Node- Theme-Hook implementiert . (Siehe die ersten Codezeilen von node_theme () , die vom Node-Modul durchgeführte Implementierung von hook_theme () .) Es gibt andere Module, die eine Vorverarbeitungsfunktion für den Knoten- Theme- Hook implementieren können , aber für diese Module wird diese Vorverarbeitungsfunktion benannt
MYMODULE_preprocess_node()
. nichttemplate_preprocess_node()
.Ein Thema kann sowohl einen Themen-Hook (siehe bartik_menu_tree () ) als auch eine Vorverarbeitungsfunktion (siehe bartik_preprocess_node () ) implementieren . Der Unterschied besteht darin, dass
bartik_menu_tree()
die Standardimplementierung ( theme_menu_tree () )bartik_preprocess_node()
überschrieben wirdtemplate_preprocess_node()
, wenn das aktuelle Thema das Bartik-Thema ist, während es nicht überschreibt , sondern danach ausgeführt wird. (Siehe Dokumentation zu Thema () .)Bei der Verwendung von zwei Präfixen besteht der Grund darin, den Zweck der Funktion zu dokumentieren. Selbst wenn theme_ in beiden Fällen verwendet würde, wäre der Unterschied zwischen
theme_image()
undtheme_preprocess_node()
immer noch klar, aber Sie müssten das folgende Thema_ lesen. Bei der aktuellen Implementierung lesen Sie nur das erste Wort des Funktionsnamens.quelle