Lange Zeit habe ich mich über die Google Sitemap Extensions welche es im TER gibt aufgeregt. Teilweise sind diese sehr veraltetet und es sind keine klaren Programmierkonzepte zu erkennen. Zudem lassen sich die Erweiterungen schlecht ergänzen um eigene Extensions/Tabellen.
Aus diesen Gründen habe ich vor kurzem mit der „Google Services“ Extension begonnen (TER). Der erste Service ist eine saubere und erweiterbare Sitemap Integration, welche ich euch vorstellen will. Zudem Suche ich weitere Möglichkeiten und Ideen für die Google Service Erweiterung. Doch wie wird eine Sitemap erstellt?
Extension Integration
Nach der Installation sollte das Static Template der Extension integriert werden. Es wird eine neue Seite angelegt (es wird keine eID-Funktionalität für die Google Sitemap benutzt) und das Sitemap Plugin auf der Seite platziert. Es wird der passende Provider ausgewählt und die Daten-Quelle bestimmt. Nach einem „Speichern und Anschauen“, kann die generierte Erweiterung eingesehen werden. Die Extension baut dabei vollständig auf ExtBase / Fluid auf und versucht das Problem der Sitemap Generierung so weit wie möglich zu abstrahieren.
Eigene Sitemap Erstellen
Hierbei wird es interessant. Weder Hooks noch XClass sollte hier eine Rolle spielen. Stattdessen habe ich an eine aktive Registrierung ähnlich des Scheduler gedacht. Die Erweiterbarkeit der Sitemap liegt in dem SitemapProvider Service. Der SitemapProvider lässt sich aus jeder Extension befüllen und um weitere Provider ergänzen. Hier ein Beispiel:
Anpassungen an eurer ext_localconf.php:
if(t3lib_extMgm::isLoaded('google_services')) { require_once(t3lib_extMgm::extPath('google_services', 'Classes/Service/SitemapProvider.php')); Tx_GoogleServices_Service_SitemapProvider::addProvider(t3lib_extMgm::extPath('yourkey', 'Classes/Service/SitemapProvider/ModelName.php'), 'Tx_Yourkey_Service_SitemapProvider_ModelName'); } |
Eine neue Klasse z.B. Classes/Service/SitemapProvider/ModelName.php
class Tx_Yourkey_Service_SitemapProvider_ModelName implements Tx_GoogleServices_Service_SitemapProvider_SitemapProviderInterface { public function getRecords($startPage, $basePages, Tx_GoogleServices_Controller_SitemapController $obj) { $nodes = array(); // Build up a $nodes Array of Tx_GoogleServices_Domain_Model_SitemapNode Objects // Use $obj->getUriBuilder() to build valid FE URLs (incl. RealURL) return $nodes; } } |
Ist die Klasse und der SitemapProvider passend bestückt, dann könnt Ihr den Provider nun mit in dem Plugin auswählen.
Was haltet ihr von diesem Ansatz? Video Sitemaps, News Sitemaps, Geo Sitemaps und Image Sitemaps sind in Arbeit. Weitere Idee und Ergänzungen sowohl in der Struktur als auch in der Funktionalität sind herzlich willkommen. Einfach kommentieren! Achtung: Die Extension befindet sich noch im Beta Status. Ihr findet die Extension bereits im TER.