0

Die Darstellung personalisieren

Posted by Oliver Goldschmidt on 18. Oktober 2010 in Allgemein, vufind |

Nachdem vufind läuft und soweit angepasst ist, können wir uns dem Finetuning widmen: der Verschönerung des Layouts. Wie es genau aussieht, ist jedem selbst überlassen. Die Änderungen werden zum Großteil nicht im PHP-Quelltext vorgenommen, sondern in speziellen, Smarty-basierten Templates. Smarty kennt einfache Programmierkonstrukte wie Schleifen und if-then-else-Klauseln, über die die Anzeige bestimmter Informationen gesteuert werden kann.

Zur Erstellung des eigenen Layouts kann zunächst eine Kopie des vorhandenen Layouts übernommen werden, die dann als Grundlage für Anpassungen herangezogen wird. Wir kopieren also web/interface/themes/default in ein anderes Verzeichnis unter themes (z.B. web/interface/themes/mytheme). Dann stellen wir in der config.ini unter theme ein, dass das neue Theme benutzt werden soll (theme = „mytheme“). Nun kann die Anpassung beginnen. Die benutzten Templates sind an manchen Stellen verschachtelt, so dass es etwas mühsam sein kann, die gesuchte Information zu finden.

Zwei Beispiele, um die Funktionsweise näher zu bringen:
Szenario 1: Wir wollen das Logo auf der Startseite austauschen
Die Startseite findet sich in der Templatedatei Search/home.tpl. Das Logo ist dort ganz weit oben verankert in einem img-Tag. Hier kann einfach der Pfad zu einem anderen Bild angegeben werden. Außerdem ist das Logo noch im Haupttemplate layout.tpl verankert, wo es von jeder Seite aus aufgerufen wird und dann in der Titelleiste der Seite erscheint. Auch hier kann der Pfad entsprechend geändert werden.
Szenario 2: Wir wollen den Titel einer Unterreihe bei den Suchergebnissen und Titeldatensätzen anzeigen
Das ist schon komplexer und mit einer kleinen Änderung in den PHP-Controllern verbunden. In dem Beispiel geht es darum, Informationen aus einem weiteren Feld des Index-Datensatzes (title_alt) in der Ergebnisliste und im Datensatz anzuzeigen. Zunächst brauchen wir eine neue Funktion im Controller, der unter web/RecordDrivers/IndexRecord.php liegt. Hier fügen wir die folgende Funktion ein:

protected function getAltTitle()
{
return isset($this->fields['title_alt']) ?
$this->fields['title_alt'] : '';
}

Wo die Funktion steht, ist letztlich egal, sie kann zum Beispiel unter die Funktion getSubtitle() geschrieben werden. Außerdem muss die Funktion noch aufgerufen und die Rückgabe in den Datenfluss des Controllers integriert werden. Dazu setzen wir die folgende Zeile in die Funktion getCoreMetadata() ein (irgendwo bei den anderen assign-Funktionsaufrufen):
$interface->assign('coreAltTitle', $this->getAltTitle());
In die Funktion getSearchResult() kommt eine ähnliche Zeile:
$interface->assign('summAltTitle', $this->getAltTitle());
Mit den eingefügten Zeilen wird das Feld alt_title aus dem Index an die Oberfläche weitergereicht, so dass die neue Variablen coreAltTitle bzw. summAltTitle in den jeweiligen Templates zur Verfügung stehen.
Jetzt fehlen nur noch die Änderungen in den Templates direkt, so dass wir die neuen Werte auch zu Gesicht bekommen:
Im theme unter RecordDrivers/Index/result.tpl (wo das Suchergebnis gelayoutet wird) fügen wir in den Titel ein:
{if $summAltTitle} - {$summAltTitle.0|truncate:180:"..."|highlight:$lookfor}{/if}
Die gesamte Titelangabe-Zeile sieht danach also so aus:
{if !$summTitle}{translate text='Title not available'}{else}{$summTitle|truncate:180:"..."|highlight:$lookfor}{if $summAltTitle} - {$summAltTitle.0|truncate:180:"..."|highlight:$lookfor}{/if}{/if}
Im Datensatztemplate (RecordDrivers/Index/core.tpl) ergänzen wir unter der Zeile
{if $coreTitleSection}{$coreTitleSection|escape}{/if}
die folgende Zeile:
{if $coreAltTitle} {$coreAltTitle.0|escape}{/if}

Diese zwei Beispiele verdeutlichen vielleicht, wie man Werte in den Templates ändern und ergänzen kann, um dadurch sein persönliches Layout von Vufind zu erstellen.

Schlagwörter: , , ,

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

*

Copyright © 2010-2019 tub.find Blog All rights reserved.
This site is using the Desk Mess Mirrored theme, v2.5, from BuyNowShop.com.