ExifGallery-Plugin für GetSimple-CMS

Erstellt am: Mittwoch 28 Dezember 2016  |  Letzte Änderung am: Samstag 11 August 2018

Zu Beginn möchte ich auf meinen Artikel verweisen, in dem ich bereits auf eine PHP Funktion exif_read_data aufmerksam gemacht habe, mit der es möglich ist, die in den Bildern gespeicherten Textinformationen (Exif-Metadaten) zu lesen.

Als eine Art praktische Übung mit dieser Funktion, habe ich nun ein einfaches Imagegallery-Plugin für GetSimple-CMS geschrieben.
Das ExifGallery-Plugin blendet auf Wunsch zusätzliche Textinformationen zu den Bildern ein und macht dabei von Exif-Attributen: XPTitle und XPComment Gebrauch. Das Plugin kommt ohne extra Datenbank aus. Die Exif-Attribute XPTitle und XPComment stehen unter Windows Betriebssystem bereits ohne zusätzliche Software zur Verfügung. Außerdem stellt das kostenlose ExifTool die genannten Attribute auch unter anderen gebräuchlichen Betriebssystemen wie Mac OS oder Linux bereit.

Einstellen der Parameter

Da ExifGallery Plugin absichtlich sehr einfach gehalten wurde, gestaltet sich die Einrichtung des Plugins, wie du gleich sehen wirst, ebenso relativ einfach. Es gibt kein Backend und es fehlen jegliche Menü-Interfaces, alle Plugin-Parameter kommen direkt in und aus einer einzigen eg.config.php Datei. Dort befinden sich auch sämtliche HTML Templates, die du nach Lust und Laune anpassen kannst.

Hatst du das Plugin geladen und entpackt, so kannst du vor der Inbetriebnahme noch einige Konfigurationen vornehmen, dazu öffne die Datei eg.config.php im Plugin-Verzeichnis, mit einem beliebigen Editor. Die meisten dort aufgeführten Parameter sind selbsterklärend, einige verdienen etwas mehr Aufmerksamkeit:

/** 
* Refer to the 'eGallery' section of your uploads folder structure.
* Make sure you use an absolute path or 'GSDATAPATH' constant with 
* an absolute path to the 'data' directory
*/
'uploadpath' => GSDATAPATH.'uploads/egallery/',

// Relative path to sub directory that contains your images
'pathpart' => 'data/uploads/egallery/',

// Directory name for thumbnails
'imgdir' => 'thumbs/',

// Directory name for your images
'_limgdir' => '',

Achtung, die Verzeichnisstruktur für die Uploads wird nicht automatisch angelegt, also bitte die Ordner so einrichten, dass das Plugin mit den von dir eingestellten Pfaden auch arbeiten kann. Achte darauf, dass alle Ordner auf dem Server vorhanden sind. Im Beispiel oben würde die Verzeichnisstruktur für die Bilder nämlich so aussehen:

/root/data/uploads/egallery/thumbs

Alle Bilder kommen also in das egallery Verzeichnis, wobei dieses einen weiteren thumbs Unterordner enthalten sollte. Dementsprechend kommen die Vorschaubilder in diesen Ordner rein.

Ähmm und nochwas: Die Exif-Metadaten werden nur in den Bildern im Hauptverzeichnis gespeichert, die Vorschaubilder (Thumbnails) müssen keine Exif-Daten beinhalten. Falls keine Exif-Daten gewünscht sind, so lass die Attribute XPTitle und XPComment einfach leer.

Bildbenennung und die fortlaufende Nummerierung der Bilder

Die Benennung der Bilder erfolgt nach einem einfachen Prinzip, Beispiel:

id_beliebiger_bildame.jpg

Zu jedem Bildpaar, also Thumb und das Originalbild, wird eine eindeutige ID zugewiesen, die Aufzählung beginnt mit der ID-Nummer 1:

1_bildname_1.jpg
thumbs/1_bildname_1.jpg

2_bildname_2.jpg
thumbs/2_bildname_2.jpg

etc...

Dabei ist der Bildname hinter der ID nicht von Bedeutung; Aber Achtung, die Thumbs sollen immer den selben Namen haben wie das Original!

Die Anwendung des Plugins

Am besten, man richtet sich gleich eine Komponente im Komponenten-Menü ein, der Inhalt könnte dann so aussehen:

Die egalleryRequire() Funktion initialisiert zu Beginn das Plugin und bringt die Sache is Rollen. Dabei werden zuerst alle für die Gallery benötigten Komponente nachgeladen und anschließend eine Instanz des Plugins erzeugt und als Wert zurückgeliefert. Nun soll nur noch die Ausgabe der ExifGallery-Elemente erfolgen, die sich ab jetzt im Array „galleryOutput“ befinden. Dies geschieht wie bei PHP-Arrays so üblich, über den Array-Index:

$eg->galleryOutput['element_name'];

Die soeben erstellte Komponente wird in ein Template übernommen, oder insofern man den DynPages-Plugin verwendet, mit entsprechenden Tags versehen direkt in ein Page integriert.

Autor: Bigin  |  Tags:  CMSGetSimpleScriptsDevelopment