Hilfsfunktionen aus eigenem Modul in Theme Layer benutzen?
am 26.04.2010 - 06:49 Uhr in
Ich habe für unsere Seite ein kleines, eigenes Modul geschrieben, dessen Aufgabe hauptsächlich darin besteht, durch das Implementieren von Drupal Hooks (bspw. form alter) und Theme Override eines anderen Moduls die Oberfläche hier und da etwas anzupassen. U.a. habe ich mir in diesem Modul ein paar Hilfsfunktionen definiert:
<?php
function _theme_mymodule_user_picture($user, $size = 'user_image_default', $classes = '') {
// Hier steht sowas wie: return "<div class='user_picture size_" . $size; usw.
}
function _theme_mymodule_comment_template($body, $first = FALSE, $user = NULL, $meta = '', $classes = '') {
// Hier steht sowas wie return "<div class='comment-body " . $classes . "'>; usw.
}
// usw.
?>Eine Hilfsfunktion sorgt für eine konsistente Ausgabe und Formatierung von den User-Avataren, eine anderen für eine konsistente Ausgabe und Formatierung von Kommentaren, usw.
Nun würde ich diese Funktionen gerne im Theme-Layer wiederverwenden, insbesondere in der comment.tpl.php die für die Ausgabe von Kommentaren unter Nodes zuständig ist. D.h. ich möchte die Kommentare konsistent auf meiner Seite haben und wenn ich was nachträglich ändere, möchte ich nicht an mehreren Stellen ändern müssen.
Wie kann ich das am besten lösen? Natürlich kann ich die obigen Funktionen einfach 1:1 in meine template.php meines Themes kopieren, aber dann hätte ich die Funktionen an zwei Stellen und wenn ich was ändern will, muss ich es an zwei Stellen ändern. Ich habe schon mit hook_theme() probiert, eigene Theme-Funktionen zu definieren, aber das hat nur die Seite crashen lassen.
- Anmelden oder Registrieren um Kommentare zu schreiben

Das geht, allerdings solltest
am 26.04.2010 - 09:28 Uhr
Das geht, allerdings solltest Du prüfen, ob die Funktion existiert und falls nicht, mit include_once Dein Modul laden. Danach ist Deine Hilfsfunktion sicher vorhanden.
Beste Grüße
Werner
Danke, aber kannst Du genauer
am 26.04.2010 - 15:30 Uhr
Danke, aber kannst Du genauer erläutern, wie ich die in meinem Modul definierte Funktion dann in meinem Template nutzen kann (oder umgekehrt)?
Entschuldige, aber diese
am 28.04.2010 - 08:08 Uhr
Entschuldige, aber diese Frage verstehe ich jetzt nicht. Wenn Du eigene Module hast, gehe ich davon aus, daß Du auch in PHP programmieren kannst. Ein Template-File ist doch auch nur ein Stück PHP-Code. Also kannst Du doch Deine Funktionen ganz normal aufrufen und das Ergebnis mittels "print" ausgeben. Wo liegt das Problem?
Solltest Du keine PHP-Kenntnisse haben sage ich nur "Sorry, das ist hier ein Drupal-Forum und kein PHP-Programmierkurs".
Beste Grüße
Werner