# Variable referencePrice mit Wert füllen wenn leer/null \[Grundpreis in Shopware 6 immer anzeigen\]

**URL:** https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253
**Category:** Programmierung
**Created:** [7. März 2024 um 15:31 UTC](https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253 "2024-03-07T15:31:28Z")
**Posts on this page:** 20
**Page:** 1

<div class="post-metadata">

### Author: ![Andreas\_147](https://avatars.discourse-cdn.com/v4/letter/a/59ef9b/32.png) [@Andreas\_147](https://forum.shopware.com/u/Andreas_147)
#### Post date: [7. März 2024 um 15:31 UTC](https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253/1 "2024-03-07T15:31:28Z")

</div>

Hallo zusammen,

price.referencePrice enthält, soweit ich das verstehe, den im Core berechneten Grundpreis (korrigiert mich bitte, wenn ich falsch liege). So steht z.B. in /page/product-detail/buy-widget-price.html.twig folgendes:

```auto
{% if price.referencePrice is not null %}
{% block page_product_detail_price_unit_reference_content %}
<span class="price-unit-reference-content">
({{ price.referencePrice.price|currency }}{{ "general.star"|trans|sw_sanitize }} / {{ price.referencePrice.referenceUnit }} {{ price.referencePrice.unitName }})
</span>
{% endblock %}
{% endif %}

```

Also wenn „price.referencePrice“ was enthält, dann…

Jetzt ist das Problem, das price.referencePrice wohl nichts enthält, wenn Inhalt und Verkauseinheit gleich sind. Dann sollte der Wert wohl null sein, wenn ich das „is not null“ richtig verstehe.

Ich möchte nun erreichen, das in diesem Fall price.referencePrice mit dem Artikelpreis gefüllt wird, welcher wiederum price.unitPrice sein dürfte.

Ich habe folgendes probiert:

```auto
{% if price.referencePrice is not null %}
{% block page_product_detail_price_unit_reference_content %}
<span class="price-unit-reference-content">
({{ price.referencePrice.price|currency }}{{ "general.star"|trans|sw_sanitize }} / {{ price.referencePrice.referenceUnit }} {{ price.referencePrice.unitName }})
</span>
{% endblock %}
{% elseif price.referencePrice == null %}
{% set price.referencePrice = price.unitPrice %}
<span class="price-unit-reference-content">
({{ price.referencePrice.price|currency }}{{ "general.star"|trans|sw_sanitize }} / {{ price.referencePrice.referenceUnit }} {{ price.referencePrice.unitName }})
</span>
{% endblock %}
{% endif %}

```

Also ich habe „{% elseif price.referencePrice == null %} {% set price.referencePrice = price.unitPrice %}“ hinzugefügt.

Das einzige was dann passiert, ist, das die Produkt-Detailseite nicht mehr öffnet „Leider ist etwas schief gelaufen“.

Ich vermute, ich habe einen Syntax oder einen Logikfehler beim befüllen von price.referencePrice.

Hat jemand eine idee? Kann ich sowas über die buy-widget-price.html.twig überhaupt machen?

Ich freue mich auch Vorschläge und Ideen!

---

<div class="post-metadata">

### Author: ![flundi81](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/flundi81/32/24725_2.png) [@flundi81](https://forum.shopware.com/u/flundi81)
#### Post date: [7. März 2024 um 15:34 UTC](https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253/2 "2024-03-07T15:34:14Z")

</div>

> [@Andreas\_147](#):
>
> `{% if price.referencePrice is not null %}`

{% if price.referencePrice is defined && price.referencePrice is not null && price.referencePrice !=„0“ %}

so in etwa?

---

<div class="post-metadata">

### Author: ![Andreas\_147](https://avatars.discourse-cdn.com/v4/letter/a/59ef9b/32.png) [@Andreas\_147](https://forum.shopware.com/u/Andreas_147)
#### Post date: [7. März 2024 um 15:38 UTC](https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253/3 "2024-03-07T15:38:58Z")

</div>

Meintest du dann z.B. so?

```auto
{% if price.referencePrice is not null %}
{% block page_product_detail_price_unit_reference_content %}
<span class="price-unit-reference-content">
({{ price.referencePrice.price|currency }}{{ "general.star"|trans|sw_sanitize }} / {{ price.referencePrice.referenceUnit }} {{ price.referencePrice.unitName }})
</span>
{% endblock %}
{% endif %}
 
{% if price.referencePrice is defined && price.referencePrice is not null && price.referencePrice !=„0“ %}
{% set price.referencePrice = price.unitPrice %}
{% block page_product_detail_price_unit_reference_content %}
<span class="price-unit-reference-content">
({{ price.referencePrice.price|currency }}{{ "general.star"|trans|sw_sanitize }} / {{ price.referencePrice.referenceUnit }} {{ price.referencePrice.unitName }})
</span>
{% endblock %}
{% endif %}

```

---

<div class="post-metadata">

### Author: ![flundi81](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/flundi81/32/24725_2.png) [@flundi81](https://forum.shopware.com/u/flundi81)
#### Post date: [7. März 2024 um 15:41 UTC](https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253/4 "2024-03-07T15:41:17Z")

</div>

versuchs mal.  
Oftmal s werden Werte, beim löschen wieder auf null gesetzt sondern auf 0. Daher mach ich oftmals alle 3 abfragen…

---

<div class="post-metadata">

### Author: ![Andreas\_147](https://avatars.discourse-cdn.com/v4/letter/a/59ef9b/32.png) [@Andreas\_147](https://forum.shopware.com/u/Andreas_147)
#### Post date: [7. März 2024 um 15:42 UTC](https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253/5 "2024-03-07T15:42:11Z")

</div>

Habs probiert, es kommt leider nur „Leider ist etwas schief gelaufen“.

---

<div class="post-metadata">

### Author: ![Anotherone](https://avatars.discourse-cdn.com/v4/letter/a/6de8d8/32.png) [@Anotherone](https://forum.shopware.com/u/Anotherone)
#### Post date: [9. März 2024 um 07:39 UTC](https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253/6 "2024-03-09T07:39:46Z")

</div>

Mal ins Logfile (z.B. var/log/prod-2024-03-09.log für den 09.03.2024) schauen, da steht normalerweise die komplette Fehlermeldung, aus der wird man deutlich schlauer…

---

<div class="post-metadata">

### Author: ![Andreas\_147](https://avatars.discourse-cdn.com/v4/letter/a/59ef9b/32.png) [@Andreas\_147](https://forum.shopware.com/u/Andreas_147)
#### Post date: [28. März 2024 um 14:51 UTC](https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253/7 "2024-03-28T14:51:12Z")

</div>

Ich habe mal die Fehlermeldungen durchgesehen, ich denke das könnte die relevante Fehlermeldung sein:  
[2024-03-28T14:48:11.303939+00:00] request.CRITICAL: Uncaught PHP Exception Shopware\Storefront\Controller\Exception\StorefrontException: „Can not render @Storefront/storefront/page/product-detail/index.html.twig view: Unknown „endif“ tag. with these parameters: {„ratingSuccess“:null,„themeIconConfig“:}“ at StorefrontException.php line 29 {„exception“:„[object] (Shopware\Storefront\Controller\Exception\StorefrontException(code: 0): Can not render @Storefront/storefront/page/product-detail/index.html.twig view: Unknown "endif" tag. with these parameters: {"ratingSuccess":null,"themeIconConfig":} at /var/www/vhosts/MEINSERVER.de/html/Shop/vendor/shopware/storefront/Controller/Exception/StorefrontException.php:29)“}

---

<div class="post-metadata">

### Author: ![Anotherone](https://avatars.discourse-cdn.com/v4/letter/a/6de8d8/32.png) [@Anotherone](https://forum.shopware.com/u/Anotherone)
#### Post date: [6. April 2024 um 22:32 UTC](https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253/8 "2024-04-06T22:32:53Z")

</div>

Da ist ein endif an der falschen Stelle bzw. zu viel. Sind die Gänsefüßchen beim zweiten if auch im „echten“ Code so angeordnet? „0“ ist falsch, es muss „0“ sein. Aber vielleicht auch nur hier so formatiert.

---

<div class="post-metadata">

### Author: ![Anotherone](https://avatars.discourse-cdn.com/v4/letter/a/6de8d8/32.png) [@Anotherone](https://forum.shopware.com/u/Anotherone)
#### Post date: [6. April 2024 um 22:33 UTC](https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253/9 "2024-04-06T22:33:33Z")

</div>

Ich seh schon, er formatiert die Gänsefüßchen um…

Nachtrag: Vielleicht beim Vergleich gegen 0 mal ganz auf die Anführungszeichen verzichten.

```auto
{% if price.referencePrice is defined && price.referencePrice is not null && price.referencePrice != 0 %}

```

---

<div class="post-metadata">

### Author: ![Andreas\_147](https://avatars.discourse-cdn.com/v4/letter/a/59ef9b/32.png) [@Andreas\_147](https://forum.shopware.com/u/Andreas_147)
#### Post date: [8. April 2024 um 16:37 UTC](https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253/10 "2024-04-08T16:37:55Z")

</div>

Danke dir - ich hab es so probiert, leider Fehlermeldung.

```auto
Can not render @Storefront/storefront/page/product-detail/index.html.twig view: Unexpected token "punctuation" of value "." ("end of statement block" expected). with these parameters: {"ratingSuccess":null,"themeIconConfig":[]}

```

---

<div class="post-metadata">

### Author: ![Anotherone](https://avatars.discourse-cdn.com/v4/letter/a/6de8d8/32.png) [@Anotherone](https://forum.shopware.com/u/Anotherone)
#### Post date: [27. April 2024 um 09:15 UTC](https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253/11 "2024-04-27T09:15:55Z")

</div>

> [@Andreas\_147](#):
>
> `{% set price.referencePrice = price.unitPrice %}`

Vorher übersehen, das funktioniert so nicht. Man kann in Twig leider keine Array-Werte direkt setzen, nur über einen Umweg mit merge

```auto
{% set price = price|merge({ 'referencePrice': price.unitPrice }) %}

```

---

<div class="post-metadata">

### Author: ![Andreas\_147](https://avatars.discourse-cdn.com/v4/letter/a/59ef9b/32.png) [@Andreas\_147](https://forum.shopware.com/u/Andreas_147)
#### Post date: [1. Mai 2024 um 11:08 UTC](https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253/12 "2024-05-01T11:08:25Z")

</div>

Ich habe es gerade so probiert:

```auto
{% sw_extends '@Storefront/storefront/page/product-detail/buy-widget-price.html.twig' %}
{% if price.referencePrice is not null %}
{% block page_product_detail_price_unit_reference_content %}
<span class="price-unit-reference-content">
({{ price.referencePrice.price|currency }}{{ "general.star"|trans|sw_sanitize }} / {{ price.referencePrice.referenceUnit }} {{ price.referencePrice.unitName }})
</span>
{% endblock %}
{% endif %}
 
{% if price.referencePrice is defined && price.referencePrice is not null && price.referencePrice !=„0“ %}
{% set price = price|merge({ 'referencePrice': price.unitPrice }) %}
{% block page_product_detail_price_unit_reference_content %}
<span class="price-unit-reference-content">
({{ price.referencePrice.price|currency }}{{ "general.star"|trans|sw_sanitize }} / {{ price.referencePrice.referenceUnit }} {{ price.referencePrice.unitName }})
</span>
{% endblock %}
{% endif %}

```

Ergibt leider folgende Fehlermeldung:

```auto
Shopware\Storefront\Controller\Exception\StorefrontException:
Can not render @Storefront/storefront/page/product-detail/index.html.twig view: The block 'page_product_detail_price_unit_reference_content' has already been defined line 3. with these parameters: {"ratingSuccess":null,"themeIconConfig":[]}

```

---

<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: [2. Mai 2024 um 03:25 UTC](https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253/13 "2024-05-02T03:25:02Z")

</div>

`The block 'page_product_detail_price_unit_reference_content' has already been defined line 3.`

Du kannst nicht zwei mal den gleichen Namen für Blocks vergeben. Die müssen unterschiedlich benannt sein.

---

<div class="post-metadata">

### Author: ![Andreas\_147](https://avatars.discourse-cdn.com/v4/letter/a/59ef9b/32.png) [@Andreas\_147](https://forum.shopware.com/u/Andreas_147)
#### Post date: [7. Mai 2024 um 18:05 UTC](https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253/14 "2024-05-07T18:05:50Z")

</div>

Mein neuester Versuch:

```auto
{% sw_extends '@Storefront/storefront/page/product-detail/buy-widget-price.html.twig' %}
{% block page_product_detail_price_unit_content %}
{% if price.referencePrice is not null %}
<span class="price-unit-content">
{{ page.product.purchaseUnit }} {{ page.product.unit.translated.name }}
</span>
{% else %}
{% set price = price|merge({ 'referencePrice': price.unitPrice }) %}
<span class="price-unit-reference-content">
({{ price.referencePrice.price|currency }}{{ "general.star"|trans|sw_sanitize }} / {{ price.referencePrice.referenceUnit }} {{ price.referencePrice.unitName }})
</span>
{% endif %}
{% endblock %}

```

Ergibt folgende Fehlermeldung:

```auto
Can not render @Storefront/storefront/page/product-detail/index.html.twig view: The merge filter only works with arrays or "Traversable", got "object" for argument 1. with these parameters: {"ratingSuccess":null,"themeIconConfig":[]}

```

---

<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: [8. Mai 2024 um 04:40 UTC](https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253/16 "2024-05-08T04:40:42Z")

</div>

`price` ist eine Entity, da funktioniert `merge` nicht. Brauchst du doch auch gar nicht, du kannst auch einfach `price.referencePrice` ersetzen.

```auto
<span class="price-unit-reference-content">
({{ price.unitPrice.price|currency }}{{ "general.star"|trans|sw_sanitize }} / {{ price.unitPrice.referenceUnit }} {{ price.unitPrice.unitName }})
</span>

```

`price.referencePrice` kannst du sonst über einen Subscriber überschreiben.

---

<div class="post-metadata">

### Author: ![Andreas\_147](https://avatars.discourse-cdn.com/v4/letter/a/59ef9b/32.png) [@Andreas\_147](https://forum.shopware.com/u/Andreas_147)
#### Post date: [8. Mai 2024 um 09:55 UTC](https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253/17 "2024-05-08T09:55:11Z")

</div>

Ich habe folgendes probiert:

```auto
{% sw_extends '@Storefront/storefront/page/product-detail/buy-widget-price.html.twig' %}
{% block page_product_detail_price_unit_content %}
{% if price.referencePrice is not null %}
<span class="price-unit-content">
{{ page.product.purchaseUnit }} {{ page.product.unit.translated.name }}
</span>
{% else %}
<span class="price-unit-reference-content">
({{ price.unitPrice.price|currency }}{{ "general.star"|trans|sw_sanitize }} / {{ price.unitPrice.referenceUnit }} {{ price.unitPrice.unitName }})
</span>
{% endif %}
{% endblock %}

```

Er zeigt dann leider nur „Inhalt: (0,00 €\* / )“ an statt z.B. „Inhalt: 1 Liter (6,47 €\* / 1 Liter)“, wie es gewünscht wäre.

---

<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: [9. Mai 2024 um 06:06 UTC](https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253/18 "2024-05-09T06:06:36Z")

</div>

Ich bin jetzt davon ausgegangen, dass `price.unitPrice`, das ist was du brauchst, da du damit ja `referencePrice` überschreiben wolltest.

Schau dir doch die Variablen im dump an, und dann gib die Werte so aus wie du sie brauchst.

```html
{{ dump(price) }}

```

Aber ich glaube am einfachsten ist es wirklich, wenn du einen Subscriber hast, der `price.referencePrice` befüllt.

---

<div class="post-metadata">

### Author: ![Andreas\_147](https://avatars.discourse-cdn.com/v4/letter/a/59ef9b/32.png) [@Andreas\_147](https://forum.shopware.com/u/Andreas_147)
#### Post date: [9. Mai 2024 um 14:33 UTC](https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253/19 "2024-05-09T14:33:10Z")

</div>

Im Standard ist es so, das Shopware, wenn referenceprice „0“ ist, also z.B. der Grundpreis dem Produktpreis entspricht, kein Grundpreis angezeigt wird.

Ich weiß, das es hier eine Ausnahme in der Preisangabenverordnung gibt. Ich finde es halt schlecht umgesetzt, denn der eigentliche Inhalt des Produkts wird nur auf der Detailseite ausgegeben. Weder in der Produktübersicht, noch in der Suche oder schon gar nicht im Warenkorb sieht der Kunde bei einem Grundpreisangabenpflichtigen Produkt wenigstens den Inhalt. **IMHO rechtlich zumindest sehr fragwürdig.**

Daher wollte ich das so umbauen, das einfach immer ein Grundpreis angezeigt wird, auch wenn der Inhalt 1 Liter oder 1kg ist, und ich hatte mir gedacht, wenn referencPrice 0 ist, diesen mit dem Artikelpreis (unitPrice) zu ersetzen, sodass für den Shop doch ein Grundpreis da ist, den er anzeigen kann.

Wie das mit einem Subscriber geht weiß ich leider nicht.

---

<div class="post-metadata">

### Author: ![Anotherone](https://avatars.discourse-cdn.com/v4/letter/a/6de8d8/32.png) [@Anotherone](https://forum.shopware.com/u/Anotherone)
#### Post date: [10. Mai 2024 um 14:20 UTC](https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253/20 "2024-05-10T14:20:39Z")

</div>

```auto
{% block page_product_detail_price_unit %}
    <div class="product-detail-price-unit">
        {% block page_product_detail_price_unit_label %}
            <span class="price-unit-label">
                {{ "detail.priceUnitName"|trans|sw_sanitize }}
            </span>
        {% endblock %}

        {% block page_product_detail_price_unit_content %}
            <span class="price-unit-content">
                {{ page.product.purchaseUnit }} {{ page.product.unit.translated.name }}
            </span>
        {% endblock %}

        {% if price.referencePrice is not null %}
            {% block page_product_detail_price_unit_reference_content %}
                <span class="price-unit-reference-content">
                    ({{ price.referencePrice.price|currency }}{{ "general.star"|trans|sw_sanitize }} / {{ price.referencePrice.referenceUnit }} {{ price.referencePrice.unitName }})
                </span>
            {% endblock %}
        {% elseif page.product.unit %}
            {% block page_product_detail_price_unit_reference_content_2 %}
                <span class="price-unit-reference-content">
                    ({{ price.unitPrice|currency }}{{ "general.star"|trans|sw_sanitize }} / {{ page.product.referenceUnit }} {{ page.product.unit.translated.name }})
                </span>
            {% endblock %}
        {% endif %}
    </div>
{% endblock %}

```

Blöd hier, daß das if um den Block page\_product\_detail\_price\_unit\_reference\_content steht und nicht innerhalb, hätte Code gespart, aber was soll’s. Und genauso macht man es mit der Listen-Ansicht (component/product/card/price-unit.html.twig).

---

<div class="post-metadata">

### Author: ![Andreas\_147](https://avatars.discourse-cdn.com/v4/letter/a/59ef9b/32.png) [@Andreas\_147](https://forum.shopware.com/u/Andreas_147)
#### Post date: [12. Mai 2024 um 13:00 UTC](https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253/21 "2024-05-12T13:00:51Z")

</div>

Ich danke dir vielmals @Anotherone !

Hast du zufällig einen Vorschlag, wie man das in den Warenkorb übertragen kann?

Ich denke, hier wird die Verfügbarkeit einer Grundpreisangabe in `/component/product/feature/item.html.twig` abgefragt, der Code ist allerdings vollständig anders - und nach meinen bisherigen Versuchen bekomme ich den Inhalt und die Inhaltsbezeichnung (also purchaseUnit und page.product.unit.translated.name) nur, wenn ohnehin ein Grundpreis angezeigt wird - siehe mein Problem im Beitrag  
[\> Variablen im Offcanvas-Warenkorb ausgeben lassen](https://forum.shopware.com/t/variablen-im-offcanvas-warenkorb-ausgeben-lassen/103476/6)

[Nächste Seite](https://forum.shopware.com/t/variable-referenceprice-mit-wert-fuellen-wenn-leer-null-grundpreis-in-shopware-6-immer-anzeigen/103253.md?page=2)
