# Stammproduktnummer im Template herausfinden

**URL:** <https://forum.shopware.com/t/stammproduktnummer-im-template-herausfinden/99028>\
**Category:** Programmierung\
**Tags:** programming\
**Created:** [21. März 2023 um 11:45 UTC](https://forum.shopware.com/t/stammproduktnummer-im-template-herausfinden/99028 "2023-03-21T11:45:07Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![Khronos](https://avatars.discourse-cdn.com/v4/letter/k/b5ac83/32.png) [@Khronos](https://forum.shopware.com/u/Khronos)\
**Post date:** [21. März 2023 um 11:45 UTC](https://forum.shopware.com/t/stammproduktnummer-im-template-herausfinden/99028/1 "2023-03-21T11:45:07Z")

</div>

Hallo,  
ich versuche die Stammproduktnummer einer Produkt Variante herauszufinden, die Varianten Produktnummer erhalte ich via:

```auto
{{ page.product.productNumber }}

```

In der ProductEntity Datenstruktur konnte ich keinen Hinweis finden: [platform/ProductEntity.php at trunk · shopware/platform · GitHub](https://github.com/shopware/platform/blob/trunk/src/Core/Content/Product/ProductEntity.php)

Ich habe bei der Variante bspw.: SW10005.8 und erwarte zusätzlich die Stammnummer SW10005. Dabei möchte ich nicht darauf hoffen, dass alle Shops der Separation mit Punkt einhalten.

Vielen Dank für Hilfe.

---

<div class="post-metadata">

**Author:** ![ergobasis](https://avatars.discourse-cdn.com/v4/letter/e/439d5e/32.png) [@ergobasis](https://forum.shopware.com/u/ergobasis)\
**Post date:** [21. März 2023 um 14:52 UTC](https://forum.shopware.com/t/stammproduktnummer-im-template-herausfinden/99028/2 "2023-03-21T14:52:37Z")

</div>

Bei mir ging das

```auto
{% if page.extensions.tsParentProduct.productNumber %}
   {{ page.extensions.tsParentProduct.productNumber }}
{% else %}
   {{ page.product.productNumber }}
{% endif %}

```

Ich weiß gerade aber nicht genau, von welchem Plugin die Werte kommen. Ich schau mal ob ich das raus finde. Melde mich.

---

<div class="post-metadata">

**Author:** ![ergobasis](https://avatars.discourse-cdn.com/v4/letter/e/439d5e/32.png) [@ergobasis](https://forum.shopware.com/u/ergobasis)\
**Post date:** [21. März 2023 um 14:55 UTC](https://forum.shopware.com/t/stammproduktnummer-im-template-herausfinden/99028/3 "2023-03-21T14:55:32Z")

</div>

maybe von dem hier

> **[GitHub - elgentos/shopware-seo-canonical-url: Use parent product canonical...](https://github.com/elgentos/shopware-seo-canonical-url)**
>
> Use parent product canonical URL for SEO for product variants - GitHub - elgentos/shopware-seo-canonical-url: Use parent product canonical URL for SEO for product variants

---

<div class="post-metadata">

**Author:** ![AlexGalax](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/alexgalax/32/9925_2.png) [@AlexGalax](https://forum.shopware.com/u/AlexGalax)\
**Post date:** [22. März 2023 um 06:45 UTC](https://forum.shopware.com/t/stammproduktnummer-im-template-herausfinden/99028/4 "2023-03-22T06:45:02Z")

</div>

Hier ein unschöner Quick-Fix:

```plaintext
{% if page.product.parentId and "." in page.product.productNumber %}
    {% set parentNumber = page.product.productNumber|split(".")[1] %}
{% endif %}

```

Der funktioniert natürlich nur dann, wenn das Format `parentNumber.childNumber` eingehalten wird.

Am besten machst du dir in einem Plugin einen Subscriber auf `ProductPageCriteriaEvent` und erweiterst die Assotiations in `$criteria` um `parent` (ungetestet):

```php
    public static function getSubscribedEvents(): array
    {
        return [
            ProductPageCriteriaEvent::class => 'onProductPageCriteria',
        ];
    }

    public function onProductPageCriteria(ProductPageCriteriaEvent $event): void
    {
        $criteria->addAssociation('parent');
    }

```

Dann hast du im Template den Parent-Artikel:

```auto
{{ page.product.parent.productNumber }}

```

---

<div class="post-metadata">

**Author:** ![Khronos](https://avatars.discourse-cdn.com/v4/letter/k/b5ac83/32.png) [@Khronos](https://forum.shopware.com/u/Khronos)\
**Post date:** [22. März 2023 um 08:04 UTC](https://forum.shopware.com/t/stammproduktnummer-im-template-herausfinden/99028/5 "2023-03-22T08:04:22Z")

</div>

Hallo,  
danke für die Antworten. Ich sollte vielleicht noch erwähnen, dass ich da ganze im App Kontext mache. Daher funktionieren die vorgeschlagenen Lösungen nicht wirklich.  
Ich habe page.product „gedumpt“ und die parentId ist vorhanden. Wie könnte ich anhand dieser die Produktnummer im Template ermitteln?

edit:

Das liefert mir null:

```auto
  {% set matchedProducts = services.repository.search('product', { 'ids': [page.product.parentId] }) %}
  {{ dump(matchedProducts) }}

```

---

<div class="post-metadata">

**Author:** ![AlexGalax](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/alexgalax/32/9925_2.png) [@AlexGalax](https://forum.shopware.com/u/AlexGalax)\
**Post date:** [22. März 2023 um 08:31 UTC](https://forum.shopware.com/t/stammproduktnummer-im-template-herausfinden/99028/6 "2023-03-22T08:31:44Z")

</div>

```auto
{{ matchedProducts.first.productNumber }}

```

Wenn `matchedProducts` aber `null` ist, hat die App wahrscheinlich nicht die benötigten Rechte. In der Doku steht:

> The `repository` service allows you to query data, that is stored inside shopware. Keep in mind that your app needs to have the correct permissions for the data it queries through this service.

---

<div class="post-metadata">

**Author:** ![Khronos](https://avatars.discourse-cdn.com/v4/letter/k/b5ac83/32.png) [@Khronos](https://forum.shopware.com/u/Khronos)\
**Post date:** [22. März 2023 um 09:26 UTC](https://forum.shopware.com/t/stammproduktnummer-im-template-herausfinden/99028/7 "2023-03-22T09:26:19Z")

</div>

Ich habe es jetzt mit der Permission

```auto
<read>product</read>

```

versucht. Leider ohne Erfolg. Ist es die falsche Persmission?
