J!3 -> J!4 Overrides: Custom Fields

  • Joomla Version
    4.x
    PHP Version
    PHP 8.2.x
    Hoster
    Lokal

    Liebe Joomla.de Community!

    Ich bin dabei (m)ein customized Template von J!3 auf J!4 zu migrieren. Klappt soweit ganz gut, die meisten Sachen habe ich durch Vergleiche von Code (OriginalFile von Joomla vs. selbstgeschriebenes OverrideFile) hinbekommen.

    Was noch ausständig ist, ist der Ouput der Custom Fields in den Overrides. Nach vielen Versuchen und einigermaßen verzweifelter Recherche habe ich quasi aufgegeben.

    Offenbar hat sich in diesem Bereich doch einiges geändert und - auch wegen meiner PHP Schwäche || - verstehe ich offenbar gar nicht, wo der Haken liegt.

    PHP
    <?php foreach ($this->item->jcfields as $field) : ?>
    <?php echo $field->label . ':' . $field->value; ?>
    <?php endforeach ?>

    Sowas (siehe oben) hat in Joomla!3 funktioniert, nun bekomme ich nur mehr die Labels der einzelnen Felder als Output, die Werte an sich werden nicht ausgegeben. Das ist ja eigentlich eine sehr einfache Ausgabe aller Inhalte sämtlicher Custom Fields; wenn das schon nicht klappt...

    Wo beginnen?

    Später soll es mal nach dem Check des Inhalts ausgegeben...

    PHP
    <?php if ((isset($myCustomFields['videocaption']) || isset($myCustomFields['videocaption']))) : ?>
     <p class="caption">
       <?php echo $myCustomFields['videocaption'] ?>
     </p>
    <?php endif; ?>

    etc, etc. Aber wenn sozusagen die Basis schon mal nicht funktioniert, dann .. naja, wo beginnen?

    Welche Infos solle ich noch posten, damit sinnvolle Hilfe möglich ist?


    Vielen Dank für's Lesen und Antworten schon im Vorhinein.


    Chris

  • Hi!


    Danke für's Nachfragen.
    In diesem Fall geht es jetzt mal um com_content&view=featured, also featured blog layout.

    Eigentlich sollte zuerst mal nur ein Subtitle aus den custom fields ausgelesen und ausgegeben werden.


    Im weiteren Verlauf werden dann custom fields ebenso in einzelnen Artikeln verwendet.


    Aber ich denke, wenn der eigentliche Knote gefunden werden könnte, sich der Rest dann quasi analog erledigen lässt. Ich habe mal das default_item.zip gezipped hier angehängt.


    Was ich noch vergessen habe:
    Die Fehlermeldung, die ich erhalte, besagt, dass der Array ganz leer ist:

    Code
    Warning: Undefined variable $customfields in /home/cmacher/html/lia22/templates/lia-b/html/com_content/featured/default_item.php on line 60

    Im file stecken ein paar Zeilen nur zum Testen (print_r... etc). Da kriege ich dann nur die labels der fields, ganz ohne tatsächliche Werte.

    Code
    Subtitle:Video URL:VideoCaption:Additional Infos:


    Danke für's Durchschauen..

    Einmal editiert, zuletzt von Indigo66 () aus folgendem Grund: Ein Beitrag von cherchri mit diesem Beitrag zusammengefügt.

  • Sorry, wenn ich wiederspreche Re:Later , aber der Code ist nicht notwendig.


    Bei mir wird das Feld angezeigt, wenn ich das einfüge:

    <?php echo $this->item->jcfields[2]->value; ?>


    wo 2 die ID vom Feld ist


    Und auch dieser Code

    PHP
    <?php foreach ($this->item->jcfields as $field) : ?>
         <?php echo $field->label . ':' . $field->value; ?>
    <?php endforeach ?>

    funktioniert bei mir tadellos


  • Vorneweg: Vielen Dank für eure Hilfe!

    Wenn es mich nicht soviel Zeit gekostet hätte, könnte ich länger darüber lachen. So lache ich nur ganz kurz, und ärgere mich über mich selber ein bisserl länger:

    Die Website, die ich migriere, ist bilingual. Einige Artikel haben aber in beiden Sprachen den gleichen Inhalt. So kam es, dass ich dem deutschsprachigen Artikel testweise Inhalte in die Custom Fields reingegeben habe, leider aber übersehen hatte, dass ich im Frontend den englischen Blog abgerufen habe. Wegen der jeweils deutschsprachigen Überschrift in beiden Artikeln hab ich schlicht übersehen, dass es eben zwei verschiedene Artikel waren. Logischerweise waren keine Daten im Frontend sichtbar. :rolleyes:

    "shake head" und (U+1F926) smilies hab ich nicht gefunden.

    Danke für eure Zeit!