# Kategorie- und Property-Namen aus TWIG bekommen

**URL:** <https://forum.shopware.com/t/kategorie-und-property-namen-aus-twig-bekommen/67513>\
**Category:** Programmierung\
**Created:** [8. Juni 2020 um 16:02 UTC](https://forum.shopware.com/t/kategorie-und-property-namen-aus-twig-bekommen/67513 "2020-06-08T16:02:36Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![SasMapp](https://avatars.discourse-cdn.com/v4/letter/s/c89c15/32.png) [@SasMapp](https://forum.shopware.com/u/SasMapp)\
**Post date:** [8. Juni 2020 um 16:02 UTC](https://forum.shopware.com/t/kategorie-und-property-namen-aus-twig-bekommen/67513/1 "2020-06-08T16:02:36Z")

</div>

Ich möchte gerne die Namen der Produktkategorien in JavaScript weiter verwenden, doch ich finde keinen Weg an sie heran zu kommen in der&nbsp;TWIG Umgebung.

Ich habe page.product.categoryTree gefunden - hier habe ich ein Array mit den Ids der Kategorien, wenn ich das richtig sehe. Aber wie komme ich am besten an die eigentlichen Namen der Kategorien („Bücher“, „Sport“ etc.) ran?

Das gleiche hätte ich auch gerne für die Properties, hier finde ich nur&nbsp;page.product.propertyIds. Wennn ich einen TWIG dump mache und nach den eigentlichen Namen / Bezeichnungen suche findet man auch nichts, aber diese Werte müssten doch eigentlich irgendwo zu finden sein, oder nicht? Oder sollte ich dazu eine eigene TWIG Funktion schreiben die das dann aus der Datenbank holt?

&nbsp;

Danke und viele Grüße

---

<div class="post-metadata">

**Author:** ![SasMapp](https://avatars.discourse-cdn.com/v4/letter/s/c89c15/32.png) [@SasMapp](https://forum.shopware.com/u/SasMapp)\
**Post date:** [10. Juni 2020 um 07:45 UTC](https://forum.shopware.com/t/kategorie-und-property-namen-aus-twig-bekommen/67513/2 "2020-06-10T07:45:17Z")

</div>

Ich habe es mit einer TWIG Funktion gelöst die die Kategorie IDs bekommt und sich die Namen via DAL aus der Datenbank holt.

---

<div class="post-metadata">

**Author:** ![SasMapp](https://avatars.discourse-cdn.com/v4/letter/s/c89c15/32.png) [@SasMapp](https://forum.shopware.com/u/SasMapp)\
**Post date:** [16. Juni 2020 um 11:07 UTC](https://forum.shopware.com/t/kategorie-und-property-namen-aus-twig-bekommen/67513/3 "2020-06-16T11:07:07Z")

</div>

```
productRepository = $productRepository;
        $this->categoryRepository = $categoryRepository;
    }

    public function getCategoryNames($categoryIds): ?array {
        $output = array();
        $categoryNames = $this->categoryRepository->search(
            new Criteria($categoryIds),
            \Shopware\Core\Framework\Context::createDefaultContext()
        );
        foreach ($categoryNames->getElements() as $category) {
            array_push($output, $category->getName());
        }
        return $output;
    }
    public function getData($event): ?string {...}
}

```

Ich habe einen solchen Service registriert. In der service.xml sieht das so aus:

```
...

```

Das siehst du auch direkt die Twig extension, die dann einfach so ist:

```
dalDealer = $dalDealer;
    }

    public function getFunctions(): array
    {
        return [
            new TwigFunction('getCategoryNames', [$this, 'getCategoryNames'])
        ];
    }

    public function getCategoryNames($ids) {
        return $this->dalDealer->getCategoryNames($ids);
    }

}

```

Im Template kann ich das dann einfach so nutzen (also ich bin da innerhalb eines HTML script tags auf einer Produkt Detail Seite):

```
window._ti.productCategories = JSON.parse('{{ getCategoryNames(page.product.categoryTree)|json_encode|raw }}');

```

&nbsp;

&nbsp;

Ob&nbsp;das der beste Weg ist kann ich dir nicht sagen, aber für mich kriegt es den Job erledigt.

---

<div class="post-metadata">

**Author:** ![StefanSch](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/stefansch/32/8550_2.png) [@StefanSch](https://forum.shopware.com/u/StefanSch)\
**Post date:** [29. Juni 2020 um 11:11 UTC](https://forum.shopware.com/t/kategorie-und-property-namen-aus-twig-bekommen/67513/4 "2020-06-29T11:11:51Z")

</div>

Ich hänge mich hier mal dran, weil fast glaube, dass das auch für mein Problem hilfreich sein könnte.

Bei mir geht es aber eher um CMS Erlebniswelten: ([https://forum.shopware.com/discussion/69694/eigene-cms-bloecke-und-daten#latest](https://forum.shopware.com/discussion/69694/eigene-cms-bloecke-und-daten#latest))  
Vielleicht kann mich jemand mal in die richtige Richtung schubbsen, ob das, was @SasMapp da macht auch für meinen Anwengunsfall benötigt wird.

> [@StefanSch schrieb:](https://forum.shopware.com/profile/33825/StefanSch "StefanSch")
> 
> …
> 
> Also habe ich jetzt&nbsp;kurzerhand einen eigenen&nbsp;Block&nbsp;erstellt, das hat mit der Doku auch ganz gut geklappt.
> 
> Aber jetzt komme ich nicht weiter. {{ dump() }} spuckt zwar alles mögliche aus, aber&nbsp;so essenzielle Infos wie&nbsp;category.name oder in der Katgeorie enthaltene Produkte sind da nicht mit dabei!  
> Was muss ich denn nun dafür noch tun?
> 
> …

---

<div class="post-metadata">

**Author:** ![SasMapp](https://avatars.discourse-cdn.com/v4/letter/s/c89c15/32.png) [@SasMapp](https://forum.shopware.com/u/SasMapp)\
**Post date:** [15. Juli 2020 um 07:50 UTC](https://forum.shopware.com/t/kategorie-und-property-namen-aus-twig-bekommen/67513/5 "2020-07-15T07:50:38Z")

</div>

Ganz wild durcheinander sind sie nicht, sie sind nach ihrer Hierarchie geordnet. Man müsste mal im categoryRepository im DalDealer schauen obdort irgendwo die Info hinterlegt ist, auf welcher Ebene die jeweilige Kategorie ist, also sprich ob es Eltern gibt, und ob die Eltern ebenfalls Eltern haben usw. Wenn man das dann weiß könnte man das auf das Array anwenden und deine Struktur erzeugen. Vielleicht gibt es aber auch einen einfacheren Weg

---

<div class="post-metadata">

**Author:** ![SasMapp](https://avatars.discourse-cdn.com/v4/letter/s/c89c15/32.png) [@SasMapp](https://forum.shopware.com/u/SasMapp)\
**Post date:** [17. Juli 2020 um 07:41 UTC](https://forum.shopware.com/t/kategorie-und-property-namen-aus-twig-bekommen/67513/6 "2020-07-17T07:41:16Z")

</div>

Gut zu wissen, danke!

---

<div class="post-metadata">

**Author:** ![AlexBS](https://avatars.discourse-cdn.com/v4/letter/a/ed655f/32.png) [@AlexBS](https://forum.shopware.com/u/AlexBS)\
**Post date:** [12. Januar 2021 um 22:43 UTC](https://forum.shopware.com/t/kategorie-und-property-namen-aus-twig-bekommen/67513/7 "2021-01-12T22:43:42Z")

</div>

Hallo,&nbsp;

ich benötige so etwas ähnliches, bin aber neu in der ganzen Thematik von TWIG und Shopware Entwicklung. Ich brauche eine TWIG Funktion, die mir über eine Category ID mehrere Werte zurückgeben kann. Kategorien-Name in der aktuellen Sprache, Link zur Kategorie-Seite und die URL zum Vorschaubild der Kategorie.&nbsp;

Sowas wie {{ getCategory[12342].translated.name&nbsp;}},&nbsp;{{ getCategory[12342].media.url }} und&nbsp;{{ getCategory[12342].url}},

wobei die url kann ich mir glaube ich über&nbsp;{{ seoUrl(‘frontend.navigation.page’, { navigationId: category.id }) }}&nbsp;ausgeben lassen, wenn ich richtig liege. Bei dem Rest würde ich ein bisschen Unterstützung von euch Experten benötigen würde.&nbsp; ![Grin](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/70033cde8e8ff79cfa538293ae71318d6f788423.png "Grin")&nbsp;Danke!

---

<div class="post-metadata">

**Author:** ![gargulla](https://avatars.discourse-cdn.com/v4/letter/g/f08c70/32.png) [@gargulla](https://forum.shopware.com/u/gargulla)\
**Post date:** [5. Juli 2021 um 06:43 UTC](https://forum.shopware.com/t/kategorie-und-property-namen-aus-twig-bekommen/67513/8 "2021-07-05T06:43:16Z")

</div>

Hallo Alex BS,  
hast du das in der Zwischenzeit gelöst. Stehe gerade vor der selben Herausforderung.  
Beste Grüße  
Lars
