{loadposition} im Beitragstitel möglich?

  • Hallo zusammen,


    ich habe mal eine verrückte Frage...



    Ein externes Online-Portal (non-Joomla) stellt als API über eine URL eine Zahl zur Verfügung. (Aktuelle Anmeldezahl einer Veranstaltung)


    Um diese Zahl (an mehreren Stellen) in Beiträgen im Fließtext anzeigen zu lassen, habe ein Modul vom Typ "Eigenes Modul" angelegt. Dort lese ich über das Sourcerer-Plugin mit der php-Funktion "file_get_contents" die URL aus und gebe die Zahl aus.


    Im Fließtext eines Beitrags binde ich die Zahl mit {loadposition} ein. Das funktioniert auch soweit prima.



    Ist es nun möglich diese Zahl schon im Beitragstitel und nicht erst im Fließtext auszugeben? hmm



    Über einen Tipp würde ich mich sehr freuen.


    Vielen Dank und viele Grüße

  • Loadposition geht nicht im Beitragstitel, da ein Modul ja normalerweise etwas mehr Inhalt inklusive umschließende divs enthält, was einen Beitragstitel sprengen würde. Daher sucht das Plugin nur im Artikeltext nach {loadposition} und ersetzt das.


    Du machst es dir aber meiner Ansicht nach komplizierter als nötig. Statt Sourcerer + Modul + Plugin + loadposition würde es reichen, ein eigenes kleines Content-Plugin zu schreiben. Du überlegst dir einen eigenen Shortcode, den du als Platzhalter im Artikeltext und/oder -titel verwenden willst. Im Plugin erstellst du eine Methode onContentPrepare, in der du den Artikel als Objekt übergeben bekommst. Dann kannst du im Text oder Titel des Artikel-Objekts nach deinem Platzhalter suchen, bei einem Fund die URL aufrufen und den Platzhalter mit dem Ergebnis ersetzen.

    Wie man das alles macht, kannst du dir am loadmodule-Plugin abschauen (plugins/content/loadmodule/). Das geht so ähnlich vor, nur dass es eben Module aus der Datenbank lädt anstatt eine Zahl von einer URL.

  • Der Titel wird nicht durch den Event onContenPrepare geschleusst und durch Plugins bearbeitet, wie es beim Beitrags-Text der Fall ist.


    Du kannst ein eigenes Plugin erstellen, wie schon gesagt, das Plugin Rereplacer in der kommerziellen Version mit PHP dafür nutzen und es geht noch schneller.


    Dazu erstellst du einen Template Override der Beitrags-Ausgabe uns änderst dort die Ausgabe des Titels mit str_replace ab.

  • Du kannst auch den Titel in einem Override der Artikelanzeige durch das onContentPrepare schicken, was dann das loadmodule rendert. Als Beispiel.

    Statt

    https://github.com/joomla/joom…icle/tmpl/default.php#L52

    im Override

    PHP
    <?php echo JHtml::_('content.prepare', $this->escape($this->item->title), 'com_content.article'); ?>

    Ob's generell eine gute Idee ist das in den Titel zu packen, wird der Rattenschwanz zeigen.


    Und als fauler Hund, würde ich bei so einem einfachen ANliegen in einen Override des Article-Views das Modul rendern, anstatt irgendwelche anderen Tools oder Krücken zu verwenden. Beispiel:

  • Ich möchte kurz anmerken, dass die Override-Tipps zwar auch irgendwie zur Lösung führen, aber unnötig kompliziert sind, wenn dafür erst noch ein Modul und das Sourcerer-Plugin geladen werden müssen.

    Da eh PHP-Code vonnöten ist, um die URL abzufragen, tun die 10 zusätzlichen Zeilen, die ein kleines Plugin enthalten würde, nicht wirklich weh.

  • Hallo zusammen und vielen Dank Harmageddon, addi und Re:Later für eure Antworten! :)


    Du machst es dir aber meiner Ansicht nach komplizierter als nötig. Statt Sourcerer + Modul + Plugin + loadposition würde es reichen, ein eigenes kleines Content-Plugin zu schreiben

    Ja, dass ist sicher von hinten durch die Brust ins Auge, aber das sind halt die kleinen Bausteine ich händeln kann...



    Selbst ein Plugin schreiben - habe ich noch nie gemacht. =O Klingt zwar interessant, aber ob ich das als php-Greenhorn schaffe wird sich zeigen...:/


    Ich habe mir die loadmodule.php mal angesehen, blicke da aber absolut nicht durch. Bin ja froh, dass ich das mit file_get_contents hinbekommen habe... Ich habe zwar hier von astrid eine gute Anleitung gefunden, habe aber noch keine Idee wie meine entsprechende .php-Datei aussehen muss...



    Ich werde mal mit einer lokalen Kopie herumprobieren, wird sicher spannend... thinking



    Euch erstmal vielen Dank bis hierher!