URLs in Joomla! 1.5 Komponenten

Ich „bastel“ an einigen Joomla!1.5-Komponenten herum. Dabei ist mir leider noch nicht klar, wie ich auf eine andere Ansicht oder einen anderen Controller innerhalb der eigenen Komponente verlinke.

Nehmen wir mal an, ich habe eine Komponenten, die „Episodenguide“ heißt. Die Komponenten wird also in J!1.5 mit index.php?option=com_episodenguide aufgerufen. Wenn ich dies in der Navigation einbaue, dann hängt das System automatisch noch die „Itemid“ an, welche dem jeweiligen Navigationspunkt entspricht: index.php?option=com_episodenguide&Itemid=1701.

Was soll angezeigt werden, wenn ich die Komponente aufrufe? Solange kein anderer Controller oder keine andere View gewählt wurde, soll er mir die Liste der Serien ausgeben. Wenn man eine Serie anklickt, soll die Liste der Episoden der Serie erscheinen.

Jetzt stehe ich hier noch vor einem anderen Problem. Brauche ich jetzt einen neuen Controller oder reicht eine andere View aus? Bis vor kurzem hatte ich auf diese Frage noch keine eindeutige Antwort gefunden. Eine andere View zu verwenden ist jedenfalls einfacher. Wobei aber auch die Regel „andere Daten = anderer Controller“ ansprechend gilt. Ich bin mir noch uneins. In meinem Beispiel ändere ich nur die View auf „serie“. Dazu brauche ich natürlich noch einen Parameter für die ausgewählte Serie – welche ich sinnigerweise ebenfalls „serie“ nenne. Die URL zum Aufruf einer Serie wäre folglich: index.php?option=com_episodenguide&Itemid=1701&view=serie&serie=TNG.

In meinem ersten Entwurf hatte ich leider die Itemid vergessen gehabt. Es wurde daher zwar die Liste der Episoden angezeigt – aber es war nicht mehr der Navigationspunkt gekennzeichnet. Hier habe ich nach langem Suchen aber eine schöne Lösungen für meine URLs in J!1.5 gefunden. Die Funktion sefRelToAbs($url); hatte leider nicht funktioniert. Vermutlich wurde diese Funktion durch JRoute::_( $url ); ersetzt. Was mir daran sehr gut gefällt, ich muß mich nicht mehr um den Namen der Komponente und auch nicht um die Itemid kümmern. Ich schreibe einfach: JRoute::_( ‚index.php?view=serie&serie=TNG‘); und erhalte damit dich richtige Verlinkung.

Ich werde mir die JRoute-Klasse noch etwas genauer ansehen. Ich denke, dass ich dort noch einige nützliche Funktionen finden werde, die mir bei meiner Komponenten-Entwicklung weiterhelfen. Der nächste Schritt wird sein, dass ich die URLs der Komponente Suchmaschinenfreundlich gestalte. Hier hoffe ich einige eingebauten Funktionen von Joomla! nutzen zu können. Schließlich gibt es eine Einstellungen in der Konfiguration „Suchmaschinenfreundliche URLs: Ja oder Nein“. Also muß es auch einige vorgefertigte Funktionen geben.

Für meinen Episodenguide kommt mir folgende Struktur in den Sinn:

  • Startseite der Komponente: /episodenguide/
  • Episodenliste einer Serie (z.B. TNG): /episodenguide/tng/
  • Episode (z.B. TNG – Das Kind): /episodenguide/tng/2×01.html oder vielleicht sogar /episodenguide/tng/2x01_das-kind.html

Aber das ist wohl noch ein weiter Weg bis dahin…

Update:

Ich habe gerade festgestellt, dass die Links ohne JRoute::_(); durch die eingebaute SEF-Funktion sauber umgewandelt werden. Wenn ich also direkt nur index.php?option=com_episodenguide&view=serie&serie=TNG schreibe, dann wird das automatisch zu /component/episodenguide/?view=serie&serie=TNG. Sobald die URL jedoch mit Slash („/“) beginnt (z.B. /index.php?option=…) findet keine Umwandlung statt. JRoute::_() erzeugt scheinbar eine URL, welche mit einem Slash („/“) beginnt und ist daher mit der eingebauten SEF-Einstellung nicht kompatibel :-(. Aber ich werde weitersuchen.

Social tagging: > > > > >

Schreibe einen Kommentar

This is a demo store for testing purposes — no orders shall be fulfilled.