Die jetzt anstehende Herausforderung ist es, die Inhalte aus HeaderPage und FooterPage für alle Seitentypen bereitzustellen. Es macht keinen Sinn im Template eine Anzeige mit HeaderPage.ss oder FooterPage.ss zu bauen. Die Idee ist es, die Datensätze für Header und Footer in der Datei Page.ss zur Anzeige zu bringen. Das ist einfach möglich, indem wir in der Datei Page.php unseren Controller um zwei Methoden erweitern: HeaderContent() und FooterContent() sollen die Datensätze aus der Datenbank laden, und im Template bereitstellen.
Ein kurzer Ausflug zu Mysql zeigt uns wie mit Silverstripe ein Datensatz aufgerufen wird. Wir sehen auch die raffinierte Konstruktion dieser Methode und wie kurz un präzis wir mit Silverstripe arbeiten können.
$holdheader = HeaderPage::get();
$holdheader = HeaderPage::get()->filter(array(
'FirstName'=> 'Facebook'
))->sort('DESC');
In der üblichen PHP Schreibweise für diese Mysql-Query würde unser Beispiel so ausshen:
SELECT * FROM HeaderPage WHERE FirstName = 'Facebook' ORDER BY DESC
Wir möchten den gesamten Datensatz abholen. Für das Hintergrundbild haben wir ja bereits festegelegt, dass nur ein Upload möglich ist, einen Textinhalt kann es auch nur einen geben. Wir können also darauf verzichten unsere Query zu filtern.
Unsere Mysql-Query setzen wir in eine Methode, damit wir den Datensatz in unserem Template auch platzieren können. Die Bezeichnung der Methode HeaderContent() reicht, um im Template mit $HeaderContent den Datensatz anzuzeigen.
Beispiel einer Methode und des entsprechenden PHP-Platzhalters im Template
public function HeaderContent() {
return ("Hallo Welt, ich melde mich aus der Methode 'HeaderContent'!");
}
Der PHP-Platzhalter in der Template-Datei Page.ss übergnimmt den Inhalt:
<p class="anzeige">
Der Inhalt der Methode: $HeaderContent - im Template!
</p>
Erzeugt die Anzeige:
Der Inhalt der Methode: Hallo Welt, ich melde mich aus der Methode 'HeaderContent'! - im Template!
Die Möglichkeit Datensätze testweise anzuzeigen bietet sich über die Funktion print_r(). Damit lässt sich eine Mysql-Query ausführen, den gesamten Datensatz anzeigen um bspw. mit einem Filtern den Datensatz auf die gewünschte Ausgabe zu reduzieren. Weitere Angaben zu: Datenbank-Query und Debugging!
Weiter mit dem Ausbau des Page-Controllers