Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
Der SEF-Mechanismus in
      Joomla 1.5
Inhalt
    Einführung



    Joomla 1.5



        Überblick
    


        Verarbeitung eines Requests
    


       ...
Einführung
• SEF = Search Engine Friendly
• Suchmaschinenoptimierung
• „Schönere“ URLs
• Alternative zu Parameterlisten


...
Vergleich
• URL ohne SEF:
  • example.tld/index.php?id=5&test=Hallo
• URL mit SEF:
  • example.tld/articles/Hallo
  • exam...
Joomla 1.5
    Am 22. Januar 2008 erste Stable-


    Version
    Vollständig Objektorientiert entwickelt



    Keine A...
Einstellungen
    SEF-URLs => example.com/foo/bar



    Suffix => example.com/foo/bar.html



    mod_rewrite => Schrei...
Seitenaufruf
    Erstellen der Application:


$mainframe =&
  JFactory::getApplication(‘site’);
-> Liefert JSite-Object.
...
Routing 1
Abarbeitung in JApplication::route() :
$uri = clone(JURI::getInstance());
$router =& $this->getRouter();
$result...
JSite::&getRouter()
Implementierung:
$config =& JFactory::getConfig();
$options[‘mode’] =
     $config->getValue(‘config.s...
JApplication::&getRouter()
JApplication::&getRouter($name, $options)
[..]
jimport(‘joomla.application.router’);
$router =&...
JRouter::getInstance()
JRouter::getInstance($client, $options):
[..]
$classname = ‘JRouter’.ucfirst($client);
$instance = ...
JApplication::route()
Abarbeitung in JApplication::route() :
$uri = close(JURI::getInstance());
$router =& $this->getRoute...
JRouterSite::parse()
Implementierung JRouterSite::parse($uri):
[..]
// Set the route
$uri->setPath(trim($path, ‘/‘));
$var...
JRouter::parse()
$vars = array();
$vars = $this->_processParseRules($uri);
if($this->_mode == JROUTER_MODE_RAW) {
    $var...
_parseSefRoute($uri)
• Implementiert in JRouterSite (includes/router.php)
• Sucht anhand der URI die richtige Komponente
 ...
Response
• Der umgekehrte Weg:
  • SEF-Plugin in Joomla überschreibt
    onAfterRender()-Event
  • Nutzt JResponse::getBod...
Eigene Komponenten mit
          Routing
• Ganz normal entwickeln und
  parametrisierte URIs ausgeben.
• router.php anlege...
Eigene Komponenten mit
          Routing 2
• TestParseRoute($segments):
  • $segments ist gesäuberter Teil der URI.
    D....
Eigene Komponenten mit
          Routing 3
• TestBuildRoute(&$query):
  • &$query ist die parametrisierte URI
  • Methode ...
Abschluss
• Implementierung im Framework recht
  aufwändig.
• Vorteilhaft für eigene Kompontente,
  da durch zwei Funktion...
Fragen?

quot;Über Fragen, die ich nicht
 beantworten kann, zerbreche ich
 mir nicht den Kopf.quot; - Konrad Zuse




    ...
Nächste SlideShare
Wird geladen in …5
×

Seminar Joomla 1.5 SEF-Mechanismus

1.841 Aufrufe

Veröffentlicht am

This presentation was held at the university of applied sciences in Giessen/Germany. It's about the SEF-Mechanism in Joomla 1.5.x.

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

  • Gehören Sie zu den Ersten, denen das gefällt!

Seminar Joomla 1.5 SEF-Mechanismus

  1. 1. Der SEF-Mechanismus in Joomla 1.5
  2. 2. Inhalt Einführung  Joomla 1.5  Überblick  Verarbeitung eines Requests  Response  Eigene Komponenten mit Routing  Abschluss  2
  3. 3. Einführung • SEF = Search Engine Friendly • Suchmaschinenoptimierung • „Schönere“ URLs • Alternative zu Parameterlisten 3
  4. 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. 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
  6. 6. Einstellungen SEF-URLs => example.com/foo/bar  Suffix => example.com/foo/bar.html  mod_rewrite => Schreibt  Serverintern die Request-URLs um. 6
  7. 7. Seitenaufruf Erstellen der Application:  $mainframe =& JFactory::getApplication(‘site’); -> Liefert JSite-Object. Aufruf des Routings:  $mainframe->route(); -> route() ist in JApplication implementiert. 7
  8. 8. Routing 1 Abarbeitung in JApplication::route() : $uri = clone(JURI::getInstance()); $router =& $this->getRouter(); $result = $router->parse($uri); JRequest::set($result,’get’,false); Kopieren der Request-URI - Router-Objekt holen. - URI parsen - Ergebniswerte in $_GET speichern. - 8
  9. 9. JSite::&getRouter() Implementierung: $config =& JFactory::getConfig(); $options[‘mode’] = $config->getValue(‘config.sef’); $router= &parent::getRouter(‘site’, $options); return $router; Beschreibung: Konfiguration für SEF Laden - Weiter reichen an parent - 9
  10. 10. JApplication::&getRouter() JApplication::&getRouter($name, $options) [..] jimport(‘joomla.application.router’); $router =& JRouter::getInstance($name, $options); [..] return $router; Importiere Joomlas Routerklasse - Reiche Instanz von JRouter zurück. - (JRouterSite-Objekt) 10
  11. 11. JRouter::getInstance() JRouter::getInstance($client, $options): [..] $classname = ‘JRouter’.ucfirst($client); $instance = new $classname($options); [..] Instanzieren der Klasse JRouterSite - 11
  12. 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
  13. 13. JRouterSite::parse() Implementierung JRouterSite::parse($uri): [..] // Set the route $uri->setPath(trim($path, ‘/‘)); $vars += parent::parse($uri); return $vars; • In $uri bereinigten $path setzen. • Vaterklasse mit dem Rest der $uri betrauen. 13
  14. 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. 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. 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. 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. 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. 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. 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
  21. 21. Fragen? quot;Über Fragen, die ich nicht beantworten kann, zerbreche ich mir nicht den Kopf.quot; - Konrad Zuse 21

×