Anzeige der Custom-Fields in der Kategorieliste per Override

  • Hallo Community,

    als Neuling hier im Forum zuerst ein fröhliches Hallo! Ich beschäftige mich zum ersten Mal mit Overrides, arbeite aber schon seit 1.5 mit Joomla. Hier komme ich allerdings nicht weiter und vielleicht findet sich jemand, der mir bei der Umsetzung meines Wunsches helfen kann:


    Anforderung:

    Anzeige der Custom-Fields in der Kategorieliste


    Gegebenheiten:

    • Joomla 3.9.14, Template JP-Universal.
    • Bilder sind in einem Artikel mit dem Plugin Simple-Image Extendet eingebunden. Die Artikel sind der Kategorie "Bilder" zugeordnet und können als Kategorieliste über einen Menüpunkt aufgerufen werden. Aktuell werden in der Liste nur der Titel und das Erstellungsdatum angezeigt. Ich wünsche mir jedoch, dass auch das Custom-Field "Lokation" in der Tabelle aufgeführt wird.
    • Ich habe bereits ein Custom-Field "Lokation" für die Kategorie "Bilder" angelegt (Inhalte >> Beiträge >> Felder). Dort wird mir als Name "lokation" und als ID die "17" angegeben.
    • Ich habe auch versucht ein Override zu erstellen (Erweiterungen >> Templates >> Templates >> Overrides erstellen >> Komponenten >> com_content >> category). Diverse Dateien u.a. default_articles_xxxxxxx.php wurden erstellt. Letztere habe ich nun angepasst.
      ich habe zuerst eine neue Spalte eingefügt

      <th scope="col" id="categorylist_header_lokation"><?php echo $article->jcfields[17]->label; ?></th>

      anschließend soll der Inhalt im Tabellenbody ausgegeben werden

      <td headers="categorylist_header_lokation"><?php echo $article->jcfields[17]->value; ?><?php endif; ?></td>

      leider passiert ... nix. Es ändert sich weder die Ansicht noch kann ich im Menüpunkt ein alternatives Layout auswählen. Es bleibt alles beim Alten.

      Danach habe ich den Code wie folgt ersetzt

      <th scope="col" id="categorylist_header_lokation"><?php echo JHtml::_('grid.sort', $article->jcfields[17]->label, 'a.title', $listDirn, $listOrder, null, 'asc', '', 'adminForm'); ?></th>

      bzw.

      <td headers="categorylist_header_lokation"><?php echo $article->jcfields[17]->value; ?></td>

      nachdem weiterhin nichts passiert ist, habe ich die Datei in "OverrideBilder.php" umbenannt, ohne Erfolg

    Was mache ich noch falsch? Ich habe mich an dieser Anleitung orientiert:

    https://www.hosteurope.de/blog…tom-fields-ein-dreamteam/


    Danke für jede Hilfe!

    Viele Grüße

  • Hallo Christiane,


    danke für die schnelle Antwort. Ich habe folgende Ursprungsdatei geändert html >> com_contend >> category >> default_articles.php und das soll eine Kategorieliste sein. So geht es auch aus dem Menülink sowie der Anleitung hervor

    index.php?option=com_content&view=category&id=148


    ich finde auch nur darin den Aufbau einer Tabelle


    Gruß

    Seppo

  • default_articles_xxxxxxx.php

    Wenn das xxxxxx ein Datumsstempel ist, war vorher schon ein Override vorhanden im Template. Ändern musst default_articles.php, egal was da sonst noch so rumdümpelt.


    Bei einem schnellen Test ist bei mir

    $article->jcfields

    auch leer, obwohl der Beitrag massig Schlagworte hat. Das ist dann aber das nächste Problem, falls bei dir auch. Man müsste das dann wohl erst aus $article->tags irgendwie extrahieren.


    Und das mit der Überschrift

    PHP
    1. <th scope="col" id="categorylist_header_lokation"><?php echo $article->jcfields[17]->label; ?></th>

    wird mit Sicherheit nicht klappen, weil das außerhalb des foreach liegt, wo $article definiert wird.

  • Wenn das xxxxxx ein Datumsstempel ist, war vorher schon ein Override vorhanden im Template. Ändern musst default_articles.php, egal was da sonst noch so rumdümpelt.

    ja, aber vielleicht vestehe ich auch etwas grundlegendes nicht oder falsch. Sobald ich auf Overrides erstellen gehe, legt Joomla mir doch von den betroffenen Dateien eine Kopie mit Zeitstempel an. Ich dachte immer, dass ich dann auch diese ändern muss, damit die Originaldatei unangetastet bleibt und nicht bei einem Update überschrieben wird.

    Komischerweise sieht nun die default_articles.php anders aus als vorher. Es ist kein Code mehr enthalten, der die Tabelle für die Kategorieliste anlegt *kopfkratz*


    Okay, ich bin ja auch gerne bereit etwas ganz anderes zu versuchen, mir geht es wie gesagt darum, dass ich die Custom-Fields in der Kategorieliste angezeigt bekomme. Hast Du einen anderen Lösungsvorschlag?

  • Sobald ich auf Overrides erstellen gehe, legt Joomla mir doch von den betroffenen Dateien eine Kopie mit Zeitstempel an. Ich dachte immer

    Siehe hier ab Post #3 zur Klärung.

    Frage zu Template Overrides

    Komischerweise sieht nun die default_articles.php anders aus als vorher. Es ist kein Code mehr enthalten, der die Tabelle für die Kategorieliste anlegt

    Das ist einerseites der Segen von Overrides, andererseits das Übel. Jeder darf in den Override reintun, was er will.

    Es gibt z.B. Template-Frameworks, da stehen in den Overrides nur 2, 3 Zeilen und man muss sich dann in der Dokumentation zum Template schlau machen, wie man nun overrided.


    Versuchsweise kannst den Override vom Template erst löschen (zuvor sichern), alle andern von dir auch, und legst dann einen neuen an.

  • also ich habe jetzt mal die Dateien aus einem Backup eingespielt und somit überhaupt kein Override mehr. Es sieht prinzipiell auch alles aus wie vorher, obwohl der Code der Tabelle nun in keiner Datei mehr zu finden ist - das verstehe ich überhaupt nicht.

    Ganz glücklich bin ich mit dem Thema Override so nicht, aber offensichtlich kann meinen Wunsch nur damit realisieren oder? Hast Du ggf. eine andere Idee?

    Wahrscheinlich bin ich aber auch einfach nur zu blöd für das Thema

  • und somit überhaupt kein Override mehr

    Bist du dir da sicher? Wie gesagt, ein so genannter Override kann schon vorher da sein. Ohne, dass du was tust.

    Schau in den UnterOrdner deines Templates html/com_content/category/.


    Dein Weg mit Overrides ist schon richtig. Ich kenne mich halt mit JoomlaPlates-Templates nicht aus, wenn ich nicht selbst davor sitze. Die verwenden ihre eigene Frameworks, oft das so genannte "Warp". Das gibts in verschiedenen Versionen.


    Deshalb mein Hinweis oben:

    Es gibt z.B. Template-Frameworks, da stehen in den Overrides nur 2, 3 Zeilen und man muss sich dann in der Dokumentation zum Template schlau machen, wie man nun overrided.

    Und der Hinweis, mal ganz plump zu machen:

    Versuchsweise kannst den Override vom Template erst löschen (zuvor sichern), alle andern von dir auch, und legst dann einen neuen an.

    Das meint:

    - Schau in den UnterOrdner deines Templates html/com_content/category/.

    - Falls da was mit "default" rumliegt => Alles Löschen oder umbenennen, so, dass vorne(!) nicht mehr "default" steht.

    - Dann im Backend, wie schon gemacht, einen neuen Override anlegen.

    - Dann im Frontend testen, ob der geladen wird. Siehe Post #2 hier: Frage zu Template Overrides

    Bei dir in der neu angelgten Datei default_articles.php

  • Link zur Webseite bzw. Link zum Problem, nur so kann effektiv geholfen werden.

    Danke für das Video und die Hilfe!


    Ich glaube allerdings, dass ein Links zu Webseite hier bei der Problemlösung nicht zielführend ist, so tiefgreifend ist das Problem nicht und ich denke wenn, dann brächte eher das Backend etwas als das Frontend - dennoch danke für den Hinweis