Joomla Customs Fields -> Subform Felder

  • Hallo,
    ich gebe mir in meiner Blogausgabe (override blog_item.php) meine vorher definierten Felder aus.

    z.b. so

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

    das klappt super!


    Wie spreche ich nun ein Feld an das als Elternelement ein Feld vom Typ Subform hat?


    also ich habe ein feld subform
    - >ansprechpartner

    und darunter wiederum 2 felder
    -> telefon

    -> name


    wie komme ich an den wert von telefon und name ran?
    ich kriege es irgendie nicht hin! wer kann helfen?


    danke vorab
    holger

  • Unter J4 gibt es verschiedene Möglichkeiten:


    PHP
    $this->item->jcfields[20]->title // gibt den Titel des Subform / Feldes aus
    $this->item->jcfields[20]->rawvalue // gibt die enthaltenen Felder als JSON aus
    $this->item->jcfields[20]->subform_rows // gibt die enthaltenen Felder als Array aus
    $this->item->jcfields[20]->value // gibt aufbereites HTML aus

    Ich würde das Feld sicherheitshalber vorher prüfen, ob es auch wirklich ein subform ist

    PHP
    $this->item->jcfields[20]->type == 'subform'

    Wenn man die Lösung hat, dann muss man nur noch das passende Problem finden.

  • Erstmal danke dafür!!!


    aber geht das nicht direkt?

    also bei der json ausgabe kommt

    {"row0":{"field14":"Frau Krause","field15":"+49 03 000 000","field16":"test@test.de"},


    kann ich die nicht direkt ansprechen?

    wie z.b.

    <?php echo $this->item->jcfields[20]->jcfield[14]->value; ?>

    <?php echo $this->item->jcfields[20]->jcfield[15]->value; ?>

    <?php echo $this->item->jcfields[20]->jcfield[16]->value; ?>


    oder muss ich das erst umwandeln und mir dann raussuchen?


    holger

  • $this->item->jcfields[20]->subform_rows // gibt die enthaltenen Felder als Array aus

    Das müsstest Du nehmen, damit kommst Du direkt in die einzelnen Felder rein.
    Du kannst Dir das ja mal temporär anzeigen lassen, dann siehst Du, was darin enthalten ist und wie Du dort hin kommst.


    PHP
    echo '<pre style="white-space: pre !important;">';
    print_r($this->item->jcfields[20]);
    echo '</pre>';

    Ich habe oben verschiedene Möglichkeiten aufgezeigt, welche Deine bessere Wahl ist, das musst Du entscheiden.

    Wenn man die Lösung hat, dann muss man nur noch das passende Problem finden.