2. Inhalt
Einführung
Joomla 1.5
Überblick
Verarbeitung eines Requests
Response
Eigene Komponenten mit Routing
Abschluss
2
3. Einführung
• SEF = Search Engine Friendly
• Suchmaschinenoptimierung
• „Schönere“ URLs
• Alternative zu Parameterlisten
3
4. Vergleich
• URL ohne SEF:
• example.tld/index.php?id=5&test=Hallo
• URL mit SEF:
• example.tld/articles/Hallo
• example.tld/index.php/articles/Hallo
4
5. Joomla 1.5
Am 22. Januar 2008 erste Stable-
Version
Vollständig Objektorientiert entwickelt
Keine Abhängigkeit mehr zu Mambo
Oftmals Sicherheitsprobleme durch
Drittkomponenten
5
12. JApplication::route()
Abarbeitung in JApplication::route() :
$uri = close(JURI::getInstance());
$router =& $this->getRouter();
$result = $router->parse($uri);
JRequest::set($result,’get’,false);
$router ist nun vom Typ “JRouterSite”
-
Übergabe von $uri an parse($uri)
-
12
14. JRouter::parse()
$vars = array();
$vars = $this->_processParseRules($uri);
if($this->_mode == JROUTER_MODE_RAW) {
$vars += $this->_parseRawRoute($uri);
}
if($this->_mode == JROUTER_MODE_SEF) {
$vars += $this->_parseSefRoute($uri);
}
• Abhängig vom Modus wird die Methode zum
parsen der URI ausgewählt.
14
15. _parseSefRoute($uri)
• Implementiert in JRouterSite (includes/router.php)
• Sucht anhand der URI die richtige Komponente
heraus.
• Jedes Menu-Item hat ein Alias.
• Aus dem Alias eines Items und denen der Vateritems
setzt sich die SEF-URI zusammen.
• Sucht im Verzeichnis der Komponente nach einer
„router.php“ und inkludiert diese falls vorhanden.
• Liefert Ergebnis des Komponenten spezifischen
Routings zurück.
15
16. Response
• Der umgekehrte Weg:
• SEF-Plugin in Joomla überschreibt
onAfterRender()-Event
• Nutzt JResponse::getBody() um den
Content zu bekommen.
• Sucht in allen Links nach „index.php“
und wendet darauf die Komponenten
spezifischen SEF-Methoden an.
• Tauscht die im Body befindlichen Links
durch die SEF-Links aus.
16
17. Eigene Komponenten mit
Routing
• Ganz normal entwickeln und
parametrisierte URIs ausgeben.
• router.php anlegen
• 2 Funktionen implementieren:
• <name>ParseRoute($segments)
• <name>BuildRoute(&$query)
• Wobei „name“ der hintere Teil aus dem
Ordnernamen der Komponente ist: z.B:
com_test => name = „Test“.
17
18. Eigene Komponenten mit
Routing 2
• TestParseRoute($segments):
• $segments ist gesäuberter Teil der URI.
D.h. ohne den für die Auflösung zur
Komponente nötigen Teil.
• Methode liefert Assoziatives Array
zurück mit den Bestandteilen die sonst
in $_GET stehen würden.
18
19. Eigene Komponenten mit
Routing 3
• TestBuildRoute(&$query):
• &$query ist die parametrisierte URI
• Methode liefert ein Array mit Segmenten
zurück die danach durch „/„ getrennt die
neue URI bilden.
19
20. Abschluss
• Implementierung im Framework recht
aufwändig.
• Vorteilhaft für eigene Kompontente,
da durch zwei Funktionen SEF-
Fähigkeit hergestellt werden kann.
• Warum SEF-Plugin?
• Schlecht bis garnicht Dokumentiert.
20