Formulardaten aus Plugin im Kategorieblog verwenden

  • mod_articles_newest:
    - Du siehst ein $list in der default.php. In vielen Beitrags-Modulen ist das die Liste aller Beiträge. Kann aber auch $items heißen oder $sonstwas, je nachdem was dem Programmierer gefallen hat.
    - Dann siehst ein

    PHP
    1. <?php foreach ($list as $item) : ?>


    Die Liste wird also durchlaufen und jeder einzelne Beitrag ist innerhalb der Schleife repräsentiert durch $item (und nicht wie oben ($this->item)!!!).
    - Also schieb ich eine Debugzeile ein.

    PHP
    1. <?php foreach ($list as $item) :echo 'DEBUG $item '.print_r($item,true);exit;?>


    - Im Frontend Gewusel. Wechsele in die Seitenquelltextansicht und schaue, ob die attribs als Key vorhanden sind und ob der Wert ein Json-String ist (den ich vor Nutzung erst in ein Joomla-Registry-Objekt wandeln muss).


    Sind sie
    Also wende ich die obige Registry-Wunderzeile auf $item an statt $this->item.


    - Dann schau ich weiter, was den noch so alles in meinem Objekt $item zu finden ist.
    Unter anderem der Kategorie-Titel.



    Da dessen Wert direkt auslesbar ist also

    Code
    1. echo $item->category_title;
  • Allerdings weiß ich jetzt immer noch nicht, wie ich an das Datum aus meinem Plugin-Formularfeld komme


    Schau, das ganze Joomla besteht im BE aus Formularen. Zusätzlich gibt es diverse im Frontend. Überall, wo eine Suche, ein Eingabefeld, eine sortierbare Liste etc. pp. im Spiel ist, ist ein Formular im Spiel.


    Jede Komponente, jede Erweiterung, auch im Frontend kann ein Formular nutzen, bereitstellen.


    Ein Plugin kann ein Formular beinhalten, um die EIGENEN Konfigurationseinstellungen anzuzeigen und veränderbar zu machen. Es kann aber zugleich jedes andere joomlakonform gebaute Formular der Seite manipulieren, bspw. diesem neue Felder hinzufügen, so wie ihr das bei Beiträgen gemacht habt. Das Hinzufügen macht je Erweiterung mehr oder weniger Sinn, weil alleine durch Hinzufügen noch nicht gewährleistet ist, ob die ins Feld eingegebenen Daten dann auch wirklich gespeichert werden. Man muss also "die Denke" des Formulars je Erweiterung berücksichtigen.


    Wenn du damit meinst, ein Datum, dass du IM Plugin selbst in ein Feld eingegeben hast, findest die Antwort in deinem 1. Post


    Damit meinte ich den Code Nr. 3.: Abfragen von Einstellungsdaten, die im Backend in einem Plugin für das Plugin selbst getätigt wurden.


    Allerdings weiß ich jetzt immer noch nicht, wie ich an das Datum aus meinem Plugin-Formularfeld komme


    Ich weiß einfach nicht, was das jetzt für ein Feld sein soll. Wenn es eines in einem Beitrag ist, ist doch eigentlich oben alles gesagt:
    Du wandelst die attribs eines Beitrags in ein Registry-Objekt, das dann in der Variable $egalwieichheisse oder $articleParams oder ... abgelegt ist und fragst es dann mittels
    $egalwieichheisse->get('diesoderjenes');
    ab.


    Also wende ich die obige Registry-Wunderzeile auf $item an statt $this->item


    Und diese jeweils anzupassende Wunderzeile ist diese:

    $articleParams = new Joomla\Registry\Registry($this->item->attribs);

  • Ich habe den Code, wie von dir gesagt, in die foreach-Schleife des Moduls eingebaut, aber dann verhaut es mir das Layout der ganzen Seite und zeigt nur noch den ersten Beitrag an - ohne Formatierung.


    Hier der Code:


    Ich geb mir echt Mühe das Ganze zu verstehen, aber ich weiß einfach zu wenig über PHP, objektorientierte Programmierung und welche Tabellen etc. Joomla verwendet. Ich probiere schon immer selbst aus, bevor ich hier poste. Es tut mir ja leid, aber ich bekomme es einfach nicht hin. Es wäre super, wenn mir irgendjemand helfen könnte.


    Tausend Dank nochmal!

    • Hilfreich

    Wie von @Re:Later oben beschrieben:


    Also wende ich die obige Registry-Wunderzeile auf $item an statt $this->item.


    Also:

    PHP
    1. <?php $articleParams = new Joomla\Registry\Registry($item->attribs); ?>


    Damit solltest du per

    PHP
    1. $articleParams->get('menschen_name');

    auf deinen gewünschten Parameter zugreifen können.


  • @Jes Ster Warum muss $this hier weg?


    Ohje, gute Frage... Ich weiß nur, dass man sich bei der objektorientierten Programmierung mit $this auf das "umgebende" Objekt bezieht. Ich schätze mal es hat etwas mit der foreach-Schleife zu tun und weil dort die Objekte erst erzeugt werden?? ?(


    Ich hab aber noch ein Problem mit den Modulen:
    Ich habe in der "_item.php" ein bestimmtes Layout aus <div>-Containern mit verschiedenen Klassen festgelegt. Das funktioniert auch so weit, aber immer nur für das erste Objekt, das erzeugt wird. Für alle weiteren Objekte werden die Container anders aufgebaut, quasi in einer anderen Reihenfolge. Mein CSS funktioniert aber nur, wenn die Container und die damit verbundenen Klassen immer exakt in der vorgebebenen Reihenfolge sind. Warum baut Joomla die Struktur bei weiteren Objekten um? Kann mir das jemand erklären und sagen, wie ich das verhindere? :huh:


    Danke und Grüße,
    Jessica