Staffelpreise "Ab" statt "Bis"

Hallo Community,

wir würden gerne für die Erweiterte Preisdarstellung nur „Ab“ Preise ausgeben:

  • Ab 10 „Preis“
  • Ab 20 "Preis "
  • Ab 30 "Preis "
    usw.

aktuell werden die Preise mit einer „Bis“ Logik dargestellt.

Habt irgendwer eine Idee?

Das wurde schon einmal im Forum diskutiert, nicht all zu lange her.

Ohne die Suche bemüht zu haben, glaube ich mich zu erinnern, dass das Ergebnis war das Template anzupassen. Es gibt aber auch Plugins dafür.

Danke, kannst du bitte die Diskussion verlinken? Ich kann sie leider nicht finden. Ein Plugin Vorschlag wäre auch top. Kann hierzu auch keine Lösung im Store finden… :man_shrugging:

Ich finde die Diskussion auf die Schnelle auch nicht über die Suche, sorry. Vermutlich wurde das Wort Staffelpreis nicht verwendet.

Im Store gibt es in der Tat kein Plugin das bis zu ab ändert. Echt erstaunlich.

Solch ein Plugin sollte aber schnell gemacht sein. Lediglich das bis zu ab ändern und den Wert x +1, außer beim letzten Wert. Das lässt sich innerhalb einer twig Datei bewerkstelligen.

@Max_Shop & @hochkant ich bin grade auch auf der Suche nach einer Lösung. Ich habe mir dazu via „Custom Template Manager“ Plugin die entsprechende TWIG Datei ("/page/product-detail/buy-widget-price.html.twig") rausgesucht.
Die entsprechende Stelle habe ich auch gefunden.

Die sieht so aus:
{% if loop.last %}
{{ „detail.priceDataInfoFrom“|trans|sw_sanitize }}

{{ price.quantity }}

{% else %}
{{ „detail.priceDataInfoUntil“|trans|sw_sanitize }}

{{ price.quantity }}

{% endif %}

Der obere If-Bereich steuert den letzten Wert bei der Preisstaffelung (z.B. Screenshot Wert ab 22). Der untere Bereich steuert die anderen Staffelmengen. Damit in jeder Zeile, statt „Bis“ jetzt „Ab“ angezeigt wird muss man einfach bei „detail.priceDataInfoUntil“ das Until auf From umbenennen. Dann zieht er sich auch an der Stelle den anderen Textbaustein.

Jetzt zu meinem Problem, wo hier vielleicht einer die Lösung kennt:
Die Staffellungen sind bei mir nicht immer gleich. Sprich bei einer Produktkategorie ist die Staffelung immer in 20er Schritten und bei einer anderen in 1er Schritten.
Das bedeutet ich kann nicht einfach {{ price.quantity -1 }} anwenden.
Wisst ihr wie ich eine generische Lösung finde, die immer den passenden „AB-Wert“ auswählt?

Du musst einfach dem Schleifen-Index um eines hoch bzw. runtersetzen. Rein von der Logik, ohne es jetzt geprüft zu haben.

Hatte heute das selbe Thema. Hier ein Template Snippet welches die Preise wie folgt darstellt:
Screenshot_20220516_164113

relevante Änderungen:
{% set i = 0 %}
{% set i = i + 1 %}
{% if loop.last %} (gesamte if Abfrage)

evtl geht es auch einfacher/besser - aber mit „it works“ bin ich schon ganz zufrieden.

{% sw_extends '@Storefront/storefront/page/product-detail/buy-widget-price.html.twig' %}

{% block page_product_detail_price_block_table_body_inner %}
	{% set i = 0 %}
	{% for price in page.product.calculatedPrices %}
		{% block page_product_detail_price_block_table_body_row %}
			<tr class="product-block-prices-row"
				itemprop="offers" itemscope
				itemtype="https://schema.org/Offer">

				{% block page_product_detail_price_block_table_body_cell_quantity %}
					<th scope="row" class="product-block-prices-cell product-block-prices-cell-thin">
						<meta itemprop="priceCurrency" content="{{ page.header.activeCurrency.translated.shortName }}" />
						<meta itemprop="price" content="{{ price.unitPrice }}" />
						<link itemprop="availability" href="https://schema.org/InStock" />

						{% if loop.last %}
							{{ "detail.priceDataInfoFrom"|trans|sw_sanitize }}
							<span class="product-block-prices-quantity">{{ price.quantity }}</span>
						{% elseif loop.first %}
							{{ "detail.priceDataInfoUntil"|trans|sw_sanitize }}
							<span class="product-block-prices-quantity">{{ price.quantity }}</span>
						{% else %}
							{{ "detail.priceDataInfoFrom"|trans|sw_sanitize }}
							<span class="product-block-prices-quantity">{{ page.product.calculatedPrices.elements[i - 1].quantity + 1 }}</span>
						{% endif %}

					</th>
				{% endblock %}

				{% block page_product_detail_price_block_table_body_cell_price %}
					<td class="product-block-prices-cell">
						{% sw_include '@Storefront/storefront/component/product/block-price.html.twig' with {
							price: price
						} only %}
					</td>
				{% endblock %}

				{% block page_product_detail_price_block_table_body_cell_reference_price %}
					{% if price.referencePrice is not null %}
						<td class="product-block-prices-cell product-block-prices-cell-thin">
							{{ price.referencePrice.price|currency }}{{ "general.star"|trans|sw_sanitize }} / {{ price.referencePrice.referenceUnit }} {{ price.referencePrice.unitName }}
						</td>
					{% endif %}
				{% endblock %}
			</tr>
		{% endblock %}
		{% set i = i + 1 %}
	{% endfor %}
{% endblock %}

1 „Gefällt mir“