# Array verschachtelt ausgeben rekursiv (Collapse) FAQ Menü - HILFE

**URL:** https://forum.shopware.com/t/array-verschachtelt-ausgeben-rekursiv-collapse-faq-menu-hilfe/51013
**Category:** Programmierung
**Created:** [8. Februar 2018 um 16:00 UTC](https://forum.shopware.com/t/array-verschachtelt-ausgeben-rekursiv-collapse-faq-menu-hilfe/51013 "2018-02-08T16:00:11Z")
**Posts on this page:** 9
**Page:** 1

<div class="post-metadata">

### Author: ![kanuma](https://avatars.discourse-cdn.com/v4/letter/k/ce7236/32.png) [@kanuma](https://forum.shopware.com/u/kanuma)
#### Post date: [8. Februar 2018 um 16:00 UTC](https://forum.shopware.com/t/array-verschachtelt-ausgeben-rekursiv-collapse-faq-menu-hilfe/51013/1 "2018-02-08T16:00:11Z")

</div>

Moin,

Ich habe mir ein kleines Plugin geschrieben, dass aus dem LiveZilla Helpdesk / Livechat die Wissensdatenbank auf einer Shopseite darstellen soll.

Problem: Ich habe ein Array und möchte dieses verschachtelt ausgeben. z.B.

```
-1
--1.1
--1.2
---1.2.1
-2
-2.1
-3
--3.1
---3.1.1

```

Das Array sieht folgendermaßen aus:

```
Array
(
    [0] => Array
        (
            [Title] => Ordner
            [Value] => 
            [Type] => 0
            [ParentId] => dc03677bf937499789e6ef77890031f4
            [Id] => 6119f458389994b3c9ada5f764f74fef
            [IsPublic] => 1
        )

    [1] => Array
        (
            [Title] => Frage 
            [Value] => Antwort
            [Type] => 1
            [ParentId] => 6119f458389994b3c9ada5f764f74fef
            [Id] => 3e86e3c46343670dafdd8cf1dce3ad20
            [IsPublic] => 1
        )

    [2] => Array
        (
            [Title] => Frage
            [Value] => Antwort 
            [Type] => 1
            [ParentId] => 6119f458389994b3c9ada5f764f74fef
            [Id] => 27d62d2fe6e72d9180f1df013624b3fa
            [IsPublic] => 1
        )

    [3] => Array
        (
            [Title] => Ordern
            [Value] => 
            [Type] => 0
            [ParentId] => 1
            [Id] => 23eb3ce8bbeedd7ca05d4d6eed49d6ee
            [IsPublic] => 1
        )

    [4] => Array
        (
            [Title] => Frage
            [Value] => Antwort
            [Type] => 1
            [ParentId] => dc03677bf937499789e6ef77890031f4
            [Id] => d67c6d33da71fa9e0c881328654795cb
            [IsPublic] => 1
        )

    [5] => Array
        (
            [Title] => Frage
            [Value] => Antwort
            [Type] => 1
            [ParentId] => 3e398cfb8af24e50abd427efc9bf987f
            [Id] => dbe96d79ddc5e936dc467b264fc59112
            [IsPublic] => 1
        )

    [6] => Array
        (
            [Title] => Frage
            [Value] => Antwort
            [Type] => 1
            [ParentId] => 23eb3ce8bbeedd7ca05d4d6eed49d6ee
            [Id] => f9f2014b28099bd9498ef108b23cc3f6
            [IsPublic] => 1
        )

    [7] => Array
        (
            [Title] => Frage
            [Value] => Antwort
            [Type] => 1
            [ParentId] => 3e398cfb8af24e50abd427efc9bf987f
            [Id] => 76103540cefd1d046c7c9ea56e225ca4
            [IsPublic] => 1
        )

    [8] => Array
        (
            [Title] => Order
            [Value] => 
            [Type] => 0
            [ParentId] => 1
            [Id] => dc03677bf937499789e6ef77890031f4
            [IsPublic] => 1
        )

    [9] => Array
        (
            [Title] => Frage
            [Value] => Antwort
            [Type] => 1
            [ParentId] => dc03677bf937499789e6ef77890031f4
            [Id] => aa523dc6ad48aa8bc00303266d7f10bc
            [IsPublic] => 1
        )

    [10] => Array
        (
            [Title] => Frage
            [Value] => Antwort
            [Type] => 1
            [ParentId] => 23eb3ce8bbeedd7ca05d4d6eed49d6ee
            [Id] => fa6fc8cc9caabf28a7e01fe0e46e6702
            [IsPublic] => 1
        )

    [11] => Array
        (
            [Title] => Order
            [Value] => 
            [Type] => 0
            [ParentId] => 1
            [Id] => 3e398cfb8af24e50abd427efc9bf987f
            [IsPublic] => 1
        )

```

&nbsp;

Das Ergebnis sieht so aus:

 ![](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/2X/5/519146c18709b6720a8a308b0c66cf0576352938.jpeg)

Nun sollen die Unterordner und Fragen in die Eltern Collapse Boxen … Kann mir jemand Hilfestellung geben, wie das in Smarty machbar ist ? habe bereits das hier gefunden, klappt jedoch nicht ganz.&nbsp;[{function} | Smarty](https://www.smarty.net/docs/en/language.function.function.tpl)

&nbsp;

Beste Grüße,

Marc

&nbsp;

---

<div class="post-metadata">

### Author: ![Rednaxela](https://avatars.discourse-cdn.com/v4/letter/r/ad7895/32.png) [@Rednaxela](https://forum.shopware.com/u/Rednaxela)
#### Post date: [8. Februar 2018 um 16:53 UTC](https://forum.shopware.com/t/array-verschachtelt-ausgeben-rekursiv-collapse-faq-menu-hilfe/51013/2 "2018-02-08T16:53:23Z")

</div>

schau mal ich glaub in sidebar\_categories.tpl , irgendwas mit sidebar war es , da wird der recursive aufruf auch benutzt. vllt. hilft das ja.

gruß,

alex

---

<div class="post-metadata">

### Author: ![CarstenHarnisch](https://avatars.discourse-cdn.com/v4/letter/c/f0a364/32.png) [@CarstenHarnisch](https://forum.shopware.com/u/CarstenHarnisch)
#### Post date: [8. Februar 2018 um 18:11 UTC](https://forum.shopware.com/t/array-verschachtelt-ausgeben-rekursiv-collapse-faq-menu-hilfe/51013/3 "2018-02-08T18:11:12Z")

</div>

der Weg führt sicherlich erstmal dahin aus dem flachen Array einen Tree zu erzeugen siehe z.B hier&nbsp;[https://stackoverflow.com/questions/8840319/build-a-tree-from-a-flat-array-in-php](https://stackoverflow.com/questions/8840319/build-a-tree-from-a-flat-array-in-php)

Danach kannst Du das Rendering machen und dann von oben nach unten die jetzt geschachelten Listen ausgeben. Wobei das ganze ist sicher deutlich einfacher in einem kleinen Plugin gemacht und dann der Übergabe an eine Variable …

---

<div class="post-metadata">

### Author: ![kanuma](https://avatars.discourse-cdn.com/v4/letter/k/ce7236/32.png) [@kanuma](https://forum.shopware.com/u/kanuma)
#### Post date: [8. Februar 2018 um 18:15 UTC](https://forum.shopware.com/t/array-verschachtelt-ausgeben-rekursiv-collapse-faq-menu-hilfe/51013/4 "2018-02-08T18:15:24Z")

</div>

Ich habe bereits das Array in einer Tree Form als Variable im Template (war mein Versuch nach dem flachen Array).

&nbsp;

wie würdest du dieses am besten ausgeben ?

---

<div class="post-metadata">

### Author: ![kanuma](https://avatars.discourse-cdn.com/v4/letter/k/ce7236/32.png) [@kanuma](https://forum.shopware.com/u/kanuma)
#### Post date: [8. Februar 2018 um 22:39 UTC](https://forum.shopware.com/t/array-verschachtelt-ausgeben-rekursiv-collapse-faq-menu-hilfe/51013/5 "2018-02-08T22:39:27Z")

</div>

Hier der Code für die Collapse Cox

```
    {$var.Title} "FRAGE / Ordner"
    

    {$var.Value} "Antwort / oder weitere Collapse Box"

```

&nbsp;

Hier das Array als Tree&nbsp;

```
Array
(
    [0] => Array
        (
            [Title] => Ordner
            [Value] => 
            [Type] => 0
            [ParentId] => 1
            [Id] => 23eb3ce8bbeedd7ca05d4d6eed49d6ee
            [IsPublic] => 1
            [children] => Array
                (
                    [0] => Array
                        (
                            [Title] => Frage
                            [Value] => Antwort
                            [Type] => 1
                            [ParentId] => 23eb3ce8bbeedd7ca05d4d6eed49d6ee
                            [Id] => f9f2014b28099bd9498ef108b23cc3f6
                            [IsPublic] => 1
                        )

                    [1] => Array
                        (
                            [Title] => Frage
                            [Value] => Antwort
                            [Type] => 1
                            [ParentId] => 23eb3ce8bbeedd7ca05d4d6eed49d6ee
                            [Id] => fa6fc8cc9caabf28a7e01fe0e46e6702
                            [IsPublic] => 1
                        )

                )

        )

    [1] => Array
        (
            [Title] => Ordner
            [Value] => 
            [Type] => 0
            [ParentId] => 1
            [Id] => dc03677bf937499789e6ef77890031f4
            [IsPublic] => 1
            [children] => Array
                (
                    [0] => Array
                        (
                            [Title] => Ordner
                            [Value] => 
                            [Type] => 0
                            [ParentId] => dc03677bf937499789e6ef77890031f4
                            [Id] => 6119f458389994b3c9ada5f764f74fef
                            [IsPublic] => 1
                            [children] => Array
                                (
                                    [0] => Array
                                        (
                                            [Title] => Frage
                                            [Value] => Antwort
                                            [Type] => 1
                                            [ParentId] => 6119f458389994b3c9ada5f764f74fef
                                            [Id] => 3e86e3c46343670dafdd8cf1dce3ad20
                                            [IsPublic] => 1
                                        )

                                    [1] => Array
                                        (
                                            [Title] => Frage
                                            [Value] => Antwort
                                            [Type] => 1
                                            [ParentId] => 6119f458389994b3c9ada5f764f74fef
                                            [Id] => 27d62d2fe6e72d9180f1df013624b3fa
                                            [IsPublic] => 1
                                        )

                                )

                        )

                    [1] => Array
                        (
                            [Title] => Frage
                            [Value] => Antwort
                            [Type] => 1
                            [ParentId] => dc03677bf937499789e6ef77890031f4
                            [Id] => d67c6d33da71fa9e0c881328654795cb
                            [IsPublic] => 1
                        )

                    [2] => Array
                        (
                            [Title] => Frage
                            [Value] => Antwort
                            [Type] => 1
                            [ParentId] => dc03677bf937499789e6ef77890031f4
                            [Id] => aa523dc6ad48aa8bc00303266d7f10bc
                            [IsPublic] => 1
                        )

                )

        )

    [2] => Array
        (
            [Title] => Ordner
            [Value] => 
            [Type] => 0
            [ParentId] => 1
            [Id] => 3e398cfb8af24e50abd427efc9bf987f
            [IsPublic] => 1
            [children] => Array
                (
                    [0] => Array
                        (
                            [Title] => Frage
                            [Value] => Antwort
                            [Type] => 1
                            [ParentId] => 3e398cfb8af24e50abd427efc9bf987f
                            [Id] => dbe96d79ddc5e936dc467b264fc59112
                            [IsPublic] => 1
                        )

                    [1] => Array
                        (
                            [Title] => Frage
                            [Value] => Antwort
                            [Type] => 1
                            [ParentId] => 3e398cfb8af24e50abd427efc9bf987f
                            [Id] => 76103540cefd1d046c7c9ea56e225ca4
                            [IsPublic] => 1
                        )

                )

        )

)

```

&nbsp;

---

<div class="post-metadata">

### Author: ![kanuma](https://avatars.discourse-cdn.com/v4/letter/k/ce7236/32.png) [@kanuma](https://forum.shopware.com/u/kanuma)
#### Post date: [9. Februar 2018 um 16:24 UTC](https://forum.shopware.com/t/array-verschachtelt-ausgeben-rekursiv-collapse-faq-menu-hilfe/51013/6 "2018-02-09T16:24:14Z")

</div>

Keiner ?

---

<div class="post-metadata">

### Author: ![simkli](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/simkli/32/13124_2.png) [@simkli](https://forum.shopware.com/u/simkli)
#### Post date: [9. Februar 2018 um 16:31 UTC](https://forum.shopware.com/t/array-verschachtelt-ausgeben-rekursiv-collapse-faq-menu-hilfe/51013/7 "2018-02-09T16:31:55Z")

</div>

Eine Baumstruktur rekursiv iterieren? Das ist das gleiche wie die Kategorien in der linken Sidebar. Hat ja auch @Rednaxela‍ bereits geschrieben. Das&nbsp;sollte dir helfen:&nbsp;[https://github.com/shopware/shopware/blob/5.3/themes/Frontend/Bare/frontend/index/sidebar-categories.tpl](https://github.com/shopware/shopware/blob/5.3/themes/Frontend/Bare/frontend/index/sidebar-categories.tpl)

Viele Grüße

---

<div class="post-metadata">

### Author: ![CarstenHarnisch](https://avatars.discourse-cdn.com/v4/letter/c/f0a364/32.png) [@CarstenHarnisch](https://forum.shopware.com/u/CarstenHarnisch)
#### Post date: [10. Februar 2018 um 00:17 UTC](https://forum.shopware.com/t/array-verschachtelt-ausgeben-rekursiv-collapse-faq-menu-hilfe/51013/8 "2018-02-10T00:17:26Z")

</div>

```
$ele1['id'] = 1;
$ele1['label'] = 'test 1';

$ele2['id'] = 2;
$ele2['label'] = 'test 2';

$ele3['id'] = 3;
$ele3['label'] = 'test 3';
$ele3['children'][] = $ele2;

$ele4['id'] = 4;
$ele4['label'] = 'test 4';
$ele4['children'][] = $ele3;

$rows[] = $ele1;
$rows[] = $ele4;

$args->getSubject()->View()->assign('aFAQ', $rows);

```

das war dann zunächst mal das “Assignment” im Controller oder Handler …

hier kommt das “Rendering” z.B. in den Details:

```
{block name='frontend_detail_description_text'}
    ...
    {function name=printFAQ}
	UL
	    {foreach $items as $item}
	    LI
	        {$item['label']}

	        {if $item['children']}
	            {call name=printFAQ items=$item['children']}
	        {/if}
	    /LI
	    {/foreach}
	UL
	{/function}
    {call name=printFAQ items=$aFAQ}
{/block}

```

Bei Fragen einfach fragen&nbsp; ![Smile](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/bac5f5766b6a20565a8fb995345b4e41d24daac0.png "Smile"). Leider zerlegt der Renderer hier die HTML Tags einfach die bei UL und LI hinzufügen. Wichtig ist die Definition der Funktion innerhalb des Blocks, da gibt es ein namespacing bei Smarty. Das “{call name=printFAQ items=$aFAQ}” ganz unten ist dann faktisch der Aufruf der Funktion (die sich dann intern selbst rekursiv aufruft).

Gruss

Carsten

---

<div class="post-metadata">

### Author: ![kanuma](https://avatars.discourse-cdn.com/v4/letter/k/ce7236/32.png) [@kanuma](https://forum.shopware.com/u/kanuma)
#### Post date: [10. Februar 2018 um 08:30 UTC](https://forum.shopware.com/t/array-verschachtelt-ausgeben-rekursiv-collapse-faq-menu-hilfe/51013/9 "2018-02-10T08:30:03Z")

</div>

Perfekt Danke!!! Klappt nun alles. Wenn jemand Interesse am Plugin hat hier:

[https://forum.shopware.com/discussion/51485/gratis-plugins-sammlung-github/p1](https://forum.shopware.com/discussion/51485/gratis-plugins-sammlung-github/p1)

&nbsp;
