08. Seiteninhalte erstellen
Beschreibung des Themas: Inhalte anzeigen
Bis jetzt haben wir unseren funktionierenden Block und eine Seite für die Einstellungen. Der Block zeigt eine einstellbare maximale Anzahl von Links. Jedoch kann es durchaus vorkommen, dass es mehr Links gibt, als wir anzeigen. Also erstellen wir jetzt eine Seite, auf der sämtlicher Inhalt aufgelistet wird, der vor einer Woche erstellt wurde.
<?php
function onthisdate_all() {
}
?>
Wir werden so viel wie möglich Quelltext aus der Block Funktion wiederverwenden. Dazu kopieren wir einfach den Inhalt. Wenn wir später mal die Funktionalität noch irgendwo benötigen, werden wir das Ganze nochmal umschreiben und in eine gesonderte Funktion schreiben. Jetzt kopiere einfach den Quelltext aus der Block Funktion in die neue onthisdate_all()
. Entgegen den anderen Funktionen in unserem Modul sind '_all' und '_admin' keine Drupal Hooks.
Solltest Du die Funktion aus einem anderen Modul heraus aufrufen wollen, verwende das Standard Namensschema, das wir auch bisher verwendet haben. So kann die Funktion dann mittels module_invoke aufgerufen werden. Wenn die Funktion privat sein soll (vielleicht, weil sie nur eine Hilfsfunktion innerhalb Deines Moduls ist), dann stelle dem Funktionsnamen noch ein '_' (Unterstrich) voran. Dadurch ist sie zwar prinzipiell immer noch von anderen Modulen aufrufbar, jedoch wird sie so für andere Entwickler gemäss den Kodierrichtlinien als "privat" markiert.
Wir wollen, dass die Funktion auch von anderen Modulen aufgerufen werden kann.
<?php
function onthisdate_all() {
// content variable that will be returned for display
$page_content = '';
// Get today's date
$today = getdate();
// calculate midnight one week ago
$start_time = mktime(0, 0, 0, $today['mon'], ($today['mday'] - 7), $today['year']);
// we want items that occur only on the day in question,
// so calculate 1 day
$end_time = $start_time + 86400;
// 60 * 60 * 24 = 86400 seconds in a day
$query = "SELECT nid, title, created FROM " .
"{node} WHERE created >= '%d' " .
" AND created <= '%d'";
// get the links (no range limit here)
$queryResult = db_query($query, $start_time, $end_time);
while ($links = db_fetch_object($queryResult)) {
$page_content .= l($links->title, 'node/'.$links->nid).'<br />';
}
...
}
?>
Zu diesem Zeitpunkt haben wir bereits den Seiteninhalt. Wie bereits vorher erwähnt, beinhaltet unser Quelltext auch Layout-Angaben. Das ist böse und sollte unbedingt vermieden werden. Da es jedoch das Thema eines anderen Handbuchs ist, kümmern wir uns ersteinmal nicht darum und lassen die Formatierung in unserem Quelltext.
Der Rest der Funktion überprüft, ob überhaupt Inhalte vorhanden sind und gibt eine Meldung aus, falls nicht. Dies ist besser als eine leere Seite anzuzeigen, da dies den Nutzer verwirren könnte.
Beachte, dass wir den Inhalt einfach zurückgeben können. Drupal kümmert sich dann um die Darstellung des Inhalts auf der Seite.
<?php
function onthisdate_all() {
...
// check to see if there was any content before
// setting up the block
if ($page_content == '') {
// no content from a week ago, let the user know
$page_content = "No events occurred on this site on this date in history.";
}
return $page_content;
}
?>
Obwohl die Funktion jetzt schon den vor einer Woche erstellten Inhalt ausgibt, haben wir bisher noch keine URL spezifiziert, unter der die Seite verfügbar ist. Das machen wir also als Nächstes.
- Anmelden oder Registrieren um Kommentare zu schreiben
Neue Kommentare
vor 2 Tagen 9 Stunden
vor 3 Tagen 5 Stunden
vor 3 Tagen 7 Stunden
vor 3 Tagen 11 Stunden
vor 4 Tagen 12 Stunden
vor 4 Tagen 12 Stunden
vor 5 Tagen 14 Stunden
vor 5 Tagen 19 Stunden
vor 6 Tagen 8 Stunden
vor 6 Tagen 12 Stunden