slogan

Open Search - Einbindung von time4joomla in das Suchenfeld des Browsers - und so funktioniert es: Open Search

Joomla-Programmierung

Buchcover des EntwicklerbuchesZusammen mit Christiane Maier-Stadtherr und René Serradeil schreiben wir ein Buch zur Joomla-Programmierung. Also das Erstellen eigener Komponenten, Module und Plugins in Joomla! 2.5

Als Übungsprojekt haben wir uns die Komponente myThings ausgedacht. Eine Komponente, mit der man Dinge verleihen und ausleihen kann. Eine Komponente, die man aber auch leicht als Kleinanzeigenmarkt oder Geschenkeliste umfunktionieren kann. Alles wird offen genug gestaltet, aber detailliert genug, um hinterher selber drauf los programmieren zu können.

Die Betrachtung der platform (Englisch geschrieben und gesprochen) und der Joomla-API dürfen natürlich nicht fehlen und der ein oder andere Exkurs zu verschiedenen Bereichen der Programmierung auch nicht.

Ziel ist es jedoch, sich nicht mit "unnötigen Ballast" aufzuhalten, sondern in erster Linie wird es ein Programmierbuch aus der Praxis für die Praxis.

Geplanter Erscheinungstermin ist April 2012 im Franzis Verlag

Es freut mich im Übrigen natürlich sehr, dass hier schon einige Ihr Kaufinteresse bekunden. Aber es dauert eben noch ein paar Tage bis es erscheint und wird dann aber in jeder Buchhandlung zu bestellen sein. Unter anderem natürlich auch über dieser Website und damit direkt bei Amazon. Damit das klappt und nicht versehentlich der Erscheinungstermin verpasst wird, gibt's den Newsletter oder die RSS-Abos Zwinkern

 

Der Termin ist leider mehrmals nach hinten verlegt worden. Das liegt einfach daran, dass auch wir ein Opfer der Versionierung und der Tatsache, dass sich gerade auch in der Programmeirung das ein oder andere innerhalb Joomlas geändert hat. Damit wir aber ein Buch am Ende haben, das auch wirklich funktioniert, haben wir in Absprache mit dem Verlag die Manuskriptabgabe auf Ende Januar 2012 gelegt.

Für euch bedeutet das, noch etwas warten, aber auch die Gewissheit, ein Buch, wo die Programmierung auch wirklich funktioniert, zu erhalten!

Man kann es jetzt auch vorbestellen: Joomla!-Extensions

 

Hier ein kleiner Blick über die Gliederung. Die ändert sich zwar immer mal wieder ein klitzeklein wenig, aber im Großen und Ganzen ist sie soweit fertig.

Legende:
Grün fett: Fertig!


  1. Großes Vorwort
  2. Bevor es losgeht
    1. GNU General Public License
    2. Arbeitsumgebung
    3. Social Coding (Begriffe SVN und github erklären)
  3. Joomla Grundwortschatz
    1. CMS - Backend und Frontend
    2. Platform oder Framework
    3. Core
    4. Erweiterungen: Module, Plugins, Sprachen, Komponenten
    5. Die Datenbank
    6. Das MVC-Entwurfsmuster
    7. Die API
  4. Unsere Komponente MyThings - Frontend, die erste
    1. Der Ausgangspunkt
    2. Vorbereitung
      1. Die Komponente einschmuggeln
      2. Tabelle anlegen
      3. Beispieldaten
      4. index.html
    3. Programmierung
      1. Der Einstiegspunkt
      2. Erweiterung der Klasse JController
      3. Erweiterung der Klasse JModel
      4. Erweiterung der Klasse JView
      5. Ein Menütyp für myThings anlegen
    4. Zweites Layout
      1. Link zur Detailansicht
      2. Model anpassen
      3. Layout Detailansicht
    5. Zusammenfassung
  5. Statistk-Modul
    1. Model: helper.php
      1. Hintergründiges zu $query und SQL
    2. Controller: mod_mythingsstats.php
    3. Layout: default.php
      1. Hintergrundwissen: Warum dieser Aufbau
  6. Das Plugin zum Einstieg
    1. Einfach nur einen Titel
    2. Dynamischer Titel per Parameterübergabe
  7. Sprachen
    1. Eleganter: Mit Sprachfiles
    2. Installation dr Sprachfiles
    3. Und noch mehr Sprache: *sys.ini
    4. Eins, viele oder nichts
    5. JText im Überblick
  8. (Projekt)-planung kommt vor dem Fall
    1. Vor der eigentlichen Entwicklung
    2. Faktor: Zeit

  9. Die Programmierkonventionen
    1. Allgemeine Konventionen für PHP-Programme
    2. Joomla-Verzeichnisnamen
    3. Das Namenskonzept in Joomla
  10. Exkurs OOP
    1. Objekte sind ein Abbild der Wirklichkeit
    2. Konstruktor
    3. Statische Methoden
    4. Abstrakte Klassen
    5. Und das Ganze mit PHP
      1. Kapselung
      2. Statische Methoden
      3. Mehrfachvererbung
      4. Wer ist $this?
      5. Abstrakte Klassen in PHP
      6. Singleton - Entwurfsmuster
    6. Abschließende Bemerkungen
  11. Die Joomla API - eine Einführung
    1. Eine Übersicht über die Pakete der Platform
    2. Wie Pfade und Klassen zusammenhängen
    3. api.joomla.org erklärt
    4. Objektfabrik
    5. Konstanten nutzen
    6. Kleine Erkundungsreise...
    7. Sammelbecken JHtml
  12. Unsere Komponente - Backend
    1. Ausgangspunkt
    2. Verzeichnissruktur
    3. Einstiegsskript
    4. Allgemeiner Controller
    5. Die Controller
    6. Die Views
      1. Toolbar
      2. Listenansicht mythings
      3. Formularansicht mything
    7. Die Tabelle
    8. Die Models
    9. Nochmal Controller
    10. Das Geheimnis der drei Controller
    11. Sprachdateien
    12. Aus Fehlern lernen
  13. Die Joomla-API - spezielle Klassen
    1. utilities (Praktisches)
    2. environment (der www-kram)
    3. base
    4. JForm
    5. Ausreißer joomla/methods
    6. Sessions, Logs
  14. Debugging
  15. Fehlerbehandlung
  16. Alles bleibt anders - Exkurs: Refactoring
  17. Fillter, Sortierung, Pagination
  18. Kategorien und User
    1. Normalisierung der Datenbank
    2. Filter und Select-Listen für Kategorien
    3. JForm und Formularküche
  19. Guter Stil - CSS und Ressourcen
    1. CSS in der Komponente einbauen: JDocument
    2. Gegen den Inline-<script>
    3. Browser-Ressourcen (media)
    4. manifest.xml
    5. Trickreiches
  20. Plugins - Arbeiten im Untergrund
    1. Suchplugins - alles unter Kontrolle
    2. Content-Plugins für die Detailansicht im Frontend
      1. u.a. Reguläre Ausdrücke
    3. System-Plugins - Alles unter Kontrolle
      1. Initalisierung
      2. Routing
      3. Login, Logout
      4. Neue Daten
      5. Datenänderung
    4. Backend-Plugins
      1. JForms- / JModels-Events
      2. JUser-Profile Plugins
      3. Eigene Plugin-Gruppe
      4. Eigene Ereignisse
  21. Module: Daten immer anders
    1. Parametisierung
    2. Datenbankabfrage und "mehr" per JDatabaseQuery
    3. Statistikmodulmit Top-X-Liste
    4. Modul: "Was ist neu"

  22. Nochmal Komponente: ACL
    1. Wer darf was? Die access.xml
    2. Der User - das wohlbekannte Wesen
    3. Das Asset - Objekt der Begierde
    4. Berechtigungen im Einsatz
  23. Formulare im Frontend: Der Ausleihvorgang
  24. SEF und Sicherheit: Routing
  25. Datei-Upload - Bilder hochladen im Frontend

  26. Administrator-/Backend-Modul: eMail-Versand - Erinnerungen zur Rückgabe
  27. System-Plugin zum Versand von Rückgabemahnungen nach Einloggen

  28. Installer
    1. Was kann man installieren und wo?
    2. Die unterschiedlichen Typen
      1. XML-Grundgerüst
    3. Übersicht der Standard-Elemente und Attribute
      1. component
      2. module
      3. plugin
      4. language (Paket!)
      5. template
      6. library
      7. package
    4. Install-/Uninstall-Skript (PHP)
    5. Update-Methode
      1. Update-Skripte (PHP)
      2. Update SQL
      3. Das <tables> Element
    6. Distributions-Archiv erstellen "Sonderfall" Ordnerstruktur Komponente (Konventionen)
    7. Update-Server

  29. Anhänge
  30. Events (Plugins)
  31. Entwicklungstools
    1. NetBeans
    2. phpEdit
    3. JFirePHP + FireBug
    4. J!DUMP
  32. Nützliche Links




  • Linsner, Christian

    Geschrieben am 2011-05-12 13:33:12

    Hallo Axel,
    da hätte ich doch Interesse.

    Gruss
    Christian (chr-hl)

    Auf Kommentar antworten

  • Nübel, Niels

    Geschrieben am 2011-05-13 17:42:39

    Nabend ihr zwei,

    ich wäre auch nicht abgeneigt das Buch zu lesen.

    Gruss
    Niels(Niels85)

    Auf Kommentar antworten

  • Stefan

    Geschrieben am 2011-06-06 16:12:05

    immer her damit, genau das Buch brauche ich gerade dringend - am besten sofort!!!

    Auf Kommentar antworten

  • Andreas

    Geschrieben am 2011-06-17 09:17:06

    *wart* ist schon Oktober ? ;-)

    Auf Kommentar antworten

  • oldlady

    Geschrieben am 2011-07-07 19:27:21

    Ja, ich bräuchte das Buch auch ganz dringend :D *hmpffff*.
    Aber eins kann ich verraten: Joomla wird immer besser. Sauberer, stringenter, einfacher - ich bin ganz begeistert.

    oldlady Christiane

    Auf Kommentar antworten

  • Ronald

    Geschrieben am 2011-07-30 11:44:24

    Habe Interesse. Ist eine Beitrag über die Joomla Nested Set dabei?

    Auf Kommentar antworten

  • michael

    Geschrieben am 2011-09-02 16:31:46

    Habe an diesem Buch sehr viel Interesse. Wo kann man sich es bestellen?

    MFG. michael

    Auf Kommentar antworten

  • Heidi

    Geschrieben am 2011-09-21 16:14:43

    Sehr schön! Dieses Buch würde ich gern bestellen.

    Grüße

    Heidi

    Auf Kommentar antworten

  • Tatjana

    Geschrieben am 2011-09-23 09:32:07

    Würde sehr gerne dieses Buch kaufen/bestellen

    Auf Kommentar antworten

  • Franz-Georg

    Geschrieben am 2011-10-25 15:48:17

    Super,

    wo und wann kann man das Buch kaufen/vorbestellen?

    Auf Kommentar antworten

  • Daniel

    Geschrieben am 2011-11-19 00:00:11

    Sagt mal, wird das hier eigentlich auch aktualisiert?(Stichwort grün machen) Ich würde es mir wohl auch sofort kaufen!

    Auf Kommentar antworten

  • Ron

    Geschrieben am 2011-12-09 14:39:52

    Würde mich auch interessieren wie weit ihr seid. Steht noch der Erscheinungstermin für Januar 2012???

    Kaufen würde ich sofort, weil es über Joomla-Programmierung nicht viel im Netz gibt. Bitte lass uns alle nicht im Ungewissen...

    Auf Kommentar antworten

  • Windoofer0815

    Geschrieben am 2011-12-19 10:39:11

    Hallo Axel!
    Ich sehe ja zur Hälfte schon grün :). Bin sehr gespannt auf Dein neues Buch!
    Dein letztes Buch über J1.7 ist der Hammer. Macht weiter so!
    Gutes Gelingen und viel Erfolg, aber trotzdem eine schöne Weihnachtszeit wünscht Euch,

    der Windoofer0815 Frank.

    Auf Kommentar antworten

  • Daniel

    Geschrieben am 2011-12-25 16:59:58

    Also ich glaub das wird nichts mehr? Zumindest mit der Aktualisierung? Oder hat jemand schon gesehen, wo man es sich vorbestellen kann?

    Auf Kommentar antworten

    • Axel [time4joomla]

      Geschrieben am 2011-12-28 15:26:52

      Also ich glaub das wird nichts mehr? Zumindest mit der Aktualisierung? Oder hat jemand schon gesehen, wo man es sich vorbestellen kann?

      Einfach mal fragen, bevor solche Behauptungen aufgestellt werden!

      Da die 2.5 doch etwa sumfangreicher ist und die Programmierung entsprechend überprüft und ggfls. angepasst und entsprechend umgeschrieben werden muss, ist Manuskriptabgabe am 31. Januar 2012. Dann braucht der Verlag mindestens einen Monat, eventuell auch länger (einschl. Druck). Vor März ist also mit keinem Buch zu rechnen. Aber wir arbeiten dennoch fleissig daran!

      Ursprünglich war sogar mal gedacht, das Buch im Dezember in den Handel zu bringen, aber da wir bereits kleinere Probleme zwischen der 1.6 und der 1.7 programmiertechnischer Art hatten, haben wir das in Absprache mit dem Verlag nach hinten geschoben.

      Oben hab ich es einfach vergessen zu ändern, was ich jetzt aber machen werde.



      Axel

      Auf Kommentar antworten

      • Daniel

        Geschrieben am 2011-12-28 21:13:10

        Also ich glaub das wird nichts mehr? Zumindest mit der Aktualisierung? Oder hat jemand schon gesehen, wo man es sich vorbestellen kann?

        Einfach mal fragen, bevor solche Behauptungen aufgestellt werden!



        Axel

        Genau das habe ich gemacht - gefragt - wie man an den drei Fragezeichen erkennen kann ;-) Da länger nichts grün wurde habe ich das ebenfalls mit Fragezeichen versehen auf die Aktualisierung hier eingegrenzt, was ja nicht die eigentliche Arbeit betreffen muss. Mein Kommentar war auf dem Vorredner und dem Termin im Januar bezogen. Ich persönlich ging davon aus, dass die Aktualisierung hier nicht länger gepflegt wird und nahm das (zu recht) als Indiz, dass es wohl Zeitprobleme gibt... Danke auf jeden fall für's Updaten.

        Letztlich habe ich nun eine Antwort auf meine >Frage

        Auf Kommentar antworten

        • Christiane

          Geschrieben am 2011-12-28 21:55:01

          Ach, lasst gut sein. Das Buch wird Klasse aber die 2.5 soll stable sein bevor wir alles endgültig fest machen, gerade bei der Progemmierung hat es keinen Sinn, schon auf einer Beta herauszukommen, da könnte sich immer noch ein wichtiges Detail ändern.

          Grüße, Christiane

          Auf Kommentar antworten

    • Axel [time4joomla]

      Geschrieben am 2011-12-28 15:57:01

      Also ich glaub das wird nichts mehr? Zumindest mit der Aktualisierung? Oder hat jemand schon gesehen, wo man es sich vorbestellen kann?

      Wie oben zu sehen, kann man es nun auch vorbestellen...


      Axel

      Auf Kommentar antworten

      • Axel [time4joomla]

        Geschrieben am 2011-12-30 20:04:13

        Gefragt hast du in der Tat, daniel, aber leider erst nach der Behauptung, dass das alles nichts mehr werden würde, was ich persönlich sehr schade finde.

        Wie dem aber auch sei, habe ich nun auch die Gliederung komplett aktualisiert.


        Axel

        Auf Kommentar antworten

        • Daniel

          Geschrieben am 2011-12-31 10:50:04

          Gefragt hast du in der Tat, daniel, aber leider erst nach der Behauptung, dass das alles nichts mehr werden würde, was ich persönlich sehr schade finde.

          Wie dem aber auch sei, habe ich nun auch die Gliederung komplett aktualisiert.


          Axel


          Ach Axel, ich glaube, du siehst das zu eng - oder ich drückte mich falsch aus, vergaß zu zitieren, wie auch immer.

          Mein Vorredner schrieb: -Steht noch der Erscheinungstermin für Januar 2012?-

          und ich schrieb: -Also ich glaub das wird nichts mehr?- Man beachte auch hier das Fragezeichen.

          Aber ich kann es dir nicht verübeln, im Internet gibt es so viele Leute, die einfach nur meckern, ohne es besser zu machen. Nun sei dir gesagt, so war das nicht gemeint, ich schätze eure Arbeit!

          In dem Sinne - eine guten Rutsch in das neue Jahr, und ich freue mich auf euer Buch!

          Weiter so Jungs (und Mädels)!

          Auf Kommentar antworten

  • oldlady

    Geschrieben am 2011-12-28 15:27:48

    Doch,doch, das wird - und man kann es vorbestellen. http://www.amazon.de/Joomla-Extensions-entwickeln-Komponenten-programmieren/dp/3645601341. Allerdings müsste der Stand hier mal aktualisiert werden .. :)

    Auf Kommentar antworten

  • Clubnite

    Geschrieben am 2012-02-12 22:39:52

    Hallo Herr Tüting,

    mit Sehnsucht wird das Programmierbuch erwartet. Besteht die Möglichkeit, dem Thema Komponenten-Router Platz einzuräumen? Dieses Thema ist wirklich sehr schlecht dokumentiert aber essentiell wichtig für SEF-Links bei einer eigenen Komponente. Es wäre sehr wichtig, zu verstehen, wie buildRoute und parseRoute funktionieren und wie man in Abhängigkeit der verschiedenen Views einer Komponente sowie der übergebenen POST-Parameter seinen Router bauen muss.

    Auf Kommentar antworten

    • Axel [tim4joomla]

      Geschrieben am 2012-02-14 22:09:04

      Besteht die Möglichkeit, dem Thema Komponenten-Router Platz einzuräumen?
      das Thema ist auch im Programm. Momentan unter Punkt 20

      Habe gerade die Gliederung überarbeitet und der Punkt befindet sich derzeit unter 24


      Axel

      Auf Kommentar antworten

  • oldaldy

    Geschrieben am 2012-02-13 07:00:23

    Hallo Clubnite,
    ja, das Thema ist auch im Programm. Momentan unter Punkt 20, aber die Gliederung wird sich an der Stelle noch ausweiten.
    Grüße, Christiane

    Auf Kommentar antworten

  • Clubnite

    Geschrieben am 2012-02-15 16:43:23

    Das ist super. Dieses Thema ist wirklich sehr wichtig - vorallem für Komponentenentwickler, denn das Verständnis der korrekten Verarbeitung eigener Parameter, die nicht view oder id oder Itemid heißen, ist für das Erstellen sinnvoller SEF-URLs essentiell. Die Dokumentation auf joomla.org gibt dazu keine hinreichenden Infos und auch in einschlägigen Foren ist darüber zu wenig zu finden, als dass man sich das selbst erschließen könnte.

    Sinnvoll in diesem Zusammenhang wäre, zu erklären, wie POST-Parameter weitergegeben werden (können), wenn SEF aktiviert ist. Ich stehe gerade selbst vor dem Problem, dass ich zwar irgendwie hinbekommen habe, einen URL umzuschreiben, damit aber keine id mehr übermittelt bekomme, die ich im Model aus dem REQUEST-Array abholen wollte. Das konnte ich nur umständlich über die htaccess lösen. Das kann jedoch nicht wirklich der korrekte Weg sein!?

    Falls das im kommenden Buch nicht ausreichend tief erörtert werden kann, besteht denn dann die Möglichkeit, dazu hier mal ein Tutorial zu veröffentlichen - oder vielleicht sogar noch vor dem Buchstart?

    Auf Kommentar antworten

    • oldlady

      Geschrieben am 2012-02-16 09:46:41

      Wir werden unser Bestes tun! Ein Vorabtutorial wird es aber nicht geben .. jedenfalls nicht von mir. Ich bin zurzeit voll auf einer anderen Baustelle :)
      Grüße, Christiane

      Auf Kommentar antworten

    • CirTap

      Geschrieben am 2012-02-16 11:09:32

      Sinnvoll in diesem Zusammenhang wäre, zu erklären, wie POST-Parameter weitergegeben werden (können), wenn SEF aktiviert ist. Ich stehe gerade selbst vor dem Problem, dass ich zwar irgendwie hinbekommen habe, einen URL umzuschreiben, damit aber keine id mehr übermittelt bekomme, die ich im Model aus dem REQUEST-Array abholen wollte. Das konnte ich nur umständlich über die htaccess lösen. Das kann jedoch nicht wirklich der korrekte Weg sein!?
      Das ist in der Tat nicht der richtige Weg :-)
      Ebenso "falsch" ist aber auch POST-Daten zu verwenden und darin eine *Leseoperationen* zu verstehen, die laut HTTP-Standard nur über GET (= URI) abzubilden sind.

      J! findet die Komponente auch wenn sie keinen eigenen Router hat, anhand von option=com_schnubbi oder dem SEF-ischen /components/schnubbi/. Von da an sind die Controller der Komponente zuständig aus POST und GET die richtigen Views und Models und sonstige Daten aus dem Request zu picken, die sie dazu brauchen.

      *Die Aufgabe des Routers ist es, die für J! so überaus notwendige *Itemid* eines passenden Menüpunktes zu ermitteln. Mehr nicht.*

      Damit dem Router (xxxParseRoute) nichts entgeht und J! seine olle Itemid bekommt, sollte man auch Dinge wie 'task', 'view' und ggf. das 'layout' der Zielseite, für den obligatorischen Redirect nach einem POST, ebenfalls als hidden INPUT ins Formular packen, damit man sie für das Rückgabe-Array parat hat und der Router oder J! nichts falsches "raten" müssen.
      Im FORM bleibt dann schlußendlich nur action="index.php?option=com_schnubbi" übrig, was für ein POST(!) vollauf genügt und auch nicht SEF-ig sein muss.

      Was an Feldern in einem Formular steht, kann z.B. auch nicht als Lesezeichen gespeichert werden und wird auch von Suchmaschinen nicht indiziert, denn ein POST-Formular ist eine Schreib-Operation, sie identifiziert keine Ressource die später nur über GET zu lesen ist/sein soll...
      Das kann bei korrekter Anwendung auch nicht gehen, denn die URL zu einem POST-Formular unterscheidet sich im Aufbau seiner URL-Parameter immer von "normalen" (GET) Seiten.
      Nur für GET-Requests will oder braucht man SEF.
      Zwei paar Stiefel, die sauber zu trennen sind!

      Aus der o.g. Kombination, ggf. mit weiteren versteckten Feldern, kann der Router dann das *Rückgabe-Array* befüllen, das Joomla benötigt um *eine passende Itemid* zu finden.
      In den meisten Fällen sind dazu nur 'view' und 'layout' relevant.
      Hat man Layouts, mit denen im Menü auf Einzeldaten verlinkt werden kann (item.php), dann eben auch eine ID.
      Hat man eine Kategorie-Ansicht, dann eben noch eine "catid" usw.

      Daher: nur was zur Identifikation einer *Itemid* von Relevanz ist, muss vom Router behandelt werden. Nicht mehr, nicht weniger.
      Alles andere an internen Daten gehört in den Controller und in Notfällen in die View. *Deren* Job ist es, aus dem Request, ggf. auch gezielt aus den Post-Daten, aber auch aus den Cookies und der Session, genau das rauszufischen, was sie zum *arbeiten* brauchen. Wie die URL dazu "aussieht" ist an diesem Punkt im Grunde völlig Schnuppe.

      Viel Spaß,
      CirTap

      Auf Kommentar antworten

  • Clubnite

    Geschrieben am 2012-02-16 11:57:16

    Danke für diese ausführliche Erklärung CirTap,

    deine Differenzierung zwischen GET und POST leuchtet ein. Jedoch verhält es sich bei mir so, dass ich auf einer Seite, die über den URL
    'index.php?option=com_mycomp&view=houses&Itemid=1'
    erreichbar ist, eine Liste zeige mit Links auf die jeweiligen Item-Views, die ohne SEF in etwa so aussehen 'index.php?option=com_mycomponent&view=house&oid=100:das-ist-ein-haus&Itemid=2'.
    Wenn ich keine SEF-Links verwende, klappt alles prima. Mit SEF-Links jedoch nicht, denn die oid kommt nicht im Model an. Also behelfe ich mir in der htaccess und rewrite den SEF-Link /house/100/das-ist-ein-haus.html nach /house?oid=100.

    Genau das ist mein Dilemma im Router. Ich bin mir nicht klar darüber (weil ich den Router nicht richtig verstehe), wie ich dieses Problem lösen kann. Augenscheinlich liefere ich ja alle relevanten Variablen option, view, Itemid. Was ist ich aber mit meiner oid? Warum wird diese zwar im SEF-Link angezeigt, ist aber im REQUEST nicht mehr zu finden?

    Auf Kommentar antworten

  • Clubnite

    Geschrieben am 2012-02-16 12:06:15

    Mir fällt gerade noch etwas auf, dass ich leider nicht in meinen vorigen Post ändern kann aufgrund fehlender Editier-Rechte.

    Ich habe mich in der Tat augenscheinlich missverständlich ausgedrückt. Ich spreche nicht von Formularen, die SEF-URLs als action-Attribute bekommen sollen sondern von Links in einem List-View. Klar, dass diese nicht via POST ihre Daten übermitteln. Die Formularverarbeitung funktioniert zu meiner Zufriedenheit. Lediglich die Klick-Links, die durch MycomponentBuildRoute bzw. MycomponentParseRoute laufen um den URL mit query-string in einen SEF-URL umzuschreiben funktionieren nicht.

    Das kann doch aber sicher nicht daran liegen, dass ich nicht 'id=100:das-ist-ein-haus verwende sondern' 'oid=100:das-ist-ein-haus'?

    Auf Kommentar antworten

  • CirTap

    Geschrieben am 2012-02-16 12:57:53

    Nun, die Definition zu GET und POST stammt vom W3C und der HTTP-Spezifikation :)

    Aber wie kommt denn "&oid=100:das-ist-ein-haus" in einen nicht-SEF Link?
    Das sieht nach Standard-SEF aus mit der sogenannten "slug": "nnn:alias-text"
    In deiner Listenansicht baust du ja die Links zur Zielseite via JRoute::_("index.php?option=com_mycomponent&view=house&oid=100")
    auf.
    Eine Itemid sollte hier übrigens NICHT drinstehen, denn die mag sich ja ändern und soll ja absichtlich erst zur Laufzeit vom Router errechnet werden. Ansonsten passiert es nämlich, dass die Daten die im Menüeintrag hinterlegt sind (id, oid) die "echten" Einträge aus der URL plattbügeln -- was eine Menülink ja in gewisser Hinsicht ja auch machen soll...

    Damit dein Router (BuildRoute) das anhübscht, muss er wissen, dass bei "view=house" auch eine "oid=xx" vorkommen *kann* und diese dann an eine von dir bestimmte Position "im Pfad" verankert.
    Ist 'sef_advanced_link' = 1 gilt mod_rewrite: /house/das-ist-ein-haus.html
    ansonsten der Standard "slug": /house/100:das-ist-ein-haus.html

    Aus exakt diesem Pfad-Aufbau rekonstruiert dann ParseRoute wiederum die internen Daten/IDs.
    In den $segments bekommst du mit mod_rewrite [0]="house" und [1]="das-ist-ein-haus" bzw. beim Standard-SEF [1]="100:das-ist-ein-haus".

    Hier darfst du die Config jedoch nicht abfragen, denn ein Link könnte ja mal auf die ein oder die andere Art in die Welt gekommen sein, d.h. du musst stets beide SEF-Varianten prüfen. Leider.
    Ebenso musst du prüfen ob du nicht schon alle Daten hast, weil die "häßliche URL" reinkam.

    Enthält [1] (alias) also einen Doppelpunkt, muss hier nur gesplittet werden und du hast die Haus-ID.
    Ansonsten musst du über den Alias in der Tabelle suchen == Tabelleindex setzen!!

    Mit der ID holst du dir dann was du sonst noch so brauchen kannst, eine catid oder seller_id oder city_id oder oder oder... Du kommst also mitunter nicht umhin in deiner Tabelle zu suchen, wenn die URL zu dünn besiedelt ist.
    All zu große Anstrengungen solltest du hier aber auch nicht unternehmen und auch nicht zu viele Variationen an URLs zulassen oder generieren, d.h. die ID nicht mal in der Mitte oder am Ende, oder die OID irgendwo sonst hinpacken.
    Das geht in die Hose, weshalb der Router immer das Letzte ist das man erstellt, wenn alles in Sack und Tüten ist.

    Nun schreibst du also 'id'=>100 zusammen mit den andere Werten view, layout etc. in das Rückgabe-Array $query. Dazu setzt du ggf. von dir festgelegte Defaults wie das übliche "layout=default".
    Wenn du für dein Layout in der XML bestimmte Parameter festgelegt hast ( ) dann muss du auch diese bedienen! Es geht also nicht darum wie die DB-Felder heißen, sondern wie J! den Menülink aufgebaut hat und was es darüber aus deiner XML-Datei weiß.

    Wenn du mit verschiedenen Layouts arbeitest kann das auch komplexer werden:
    /house/details/das-ist-ein-haus.html
    /house/bilder/das-ist-ein-haus.html
    Dann hast du aber auch ein $segments[2] was deinem Router sagen sollte: Achtung! Drei Eenträge, da steht dann sicherlich "view/layout/alias" und nicht nur "view/alias". Also noch ein handvoll if()s ins Spiel werfen.

    Am Ende müssen im Array alle Schlüssel und Werte enthalten sein, die einen (passenden) Menüpunkt liefern kann. JMenu regelt das von alleine.
    Und ja: ParseRoute ist so ziemlich das Grottigste was man sich denken kann und der Router eine einzige Katastrophe. Vielleicht wird's in der 3.x besser :)

    Wenn sonst noch Fragen sind, sollten wir das ggf. ins JoomlaPortal verlegen und 'nen Link auf das Thema dort setzen. Axel betreibt ja hier kein Forum und sicherlich finden sich ein paar kluge, hilfsbereite Geister die dieses Routerding schon mal gebändigt haben, z.B. Hackwar...

    CirTap

    Auf Kommentar antworten

  • CirTap

    Geschrieben am 2012-02-16 13:03:40

    hmm... abgesehen von einigen Schraipfehlern hat's was verschluckt: bei den XML-Parametern meinte ich die "url" und "link" Elemente etc. die man da reinpacken kann und die Namen die dann der Parameter hat.

    CirTap

    Auf Kommentar antworten

  • Clubnite

    Geschrieben am 2012-02-16 13:16:34

    Ja, ich wäre stark dafür, dieses Anliegen ins Forum zu verlagern, weil man dort besser Posts editieren und zitieren und Code posten kann. Auch haben dann mehr User etwas davon. Wie soll ichs machen? Thema eröffnen und meine Frage dort nochmal posten und du fügst deine Antworten dort ein? Oder was schlägst du vor?

    Auf Kommentar antworten

Veroeffentlichen Sie ihre Kommentare ...

Suchen Sie einen Webhoster? time4joomla empfiehlt: www.Joomlahosting.de
Joomla ist ein freies CMS - Webdesign, Programming and Content by time4mambo
PR nur für diese Seite: SEO Tools

nach oben scrollen

www.time4joomla.de is not affiliated with or endorsed by the Joomla! Project or Open Source Matters. The Joomla! name and logo is used under a limited license granted by Open Source Matters the trademark holder in the United States and other countries.