Einzelne Eigenschaften zusätzlich auf Produktdetailseite anzeigen

Hallo,

ich würde gerne bestimmte Produkteigenschaften zusätzlich auf der Produktdetailseite ausgeben. Wie komme ich an den entsprechenden Code? So in etwa?
{{page_product_detail_properties_idnummer}}

Oder lieber über „wesentliche Merkmale“? Wie wäre da der Code?

Wir sind an einem ganz ähnlichen Thema dran, schaue einmal hier:

Hi,

in diesem Beitrag wird erklärt, wie man die Bilder der Eigenschaften auf der Produktdetailseite anzeigen kann: (Solved) Eigenschaften - Bilder - Produktdetailseite

Direkt oben im ersten Beitrag wird etwas Ähnliches versucht, ohne das jetzt getestet zu haben, kannst du das mal probieren im Template einzufügen:

{% for groupOption in group.getOptions %}
{{ groupOption.translated.name|e }}
{% endfor %}

Sag nochmal Bescheid, falls es nicht funktioniert, dann teste ich das nochmal lokal bei mir.

Viele Grüße
Tom

Hallo Tom,

vielen Dank. Es funktioniert aber leider nicht, es wird gar nichts ausgegeben. Auch keine Fehlermeldung.

Ok das ist komisch, eigentlich müsste mindestens ein Fehler kommen.

Die Änderungen machst du aber nicht in deinem LiveShop oder? also in einem Testsystem ohne Kundenzugriff?
In welcher Datei fügst du den Code ein?
Hast du den Cache gelöscht und das Theme kompiliert?

Viele Grüße
Tom

Hi Tom,

ich habe den Code in die buy-widget.html.twig eingefügt. Hier sollen die ausgewählten Eigenschaften nochmal extra angezeigt werden. Cache ist natürlich geleert und das Theme kompiliert.

Schreib mal vor den Code einfach „Test123“, also so:

Test123
{% for groupOption in group.getOptions %}
{{ groupOption.translated.name|e }}
{% endfor %}

Wird dir das „Test123“ im Frontend angezeigt?

Vergiss was ich oben gesagt habe :sweat_smile:, die Eigenschaften findest du unter page.product.properties

So kannst du dir ganz einfach alle Eigenschaften ausgeben lassen:

{% for properties in page.product.properties %}
	{{ properties.translated.name }}
{% endfor %}

Da werden aber alle Eigenschaften ausgegeben, richtig? Wie kann ich nur bestimmte Eigenschaften ausgeben?

Du könntest natürlich die „bestimmte Eigenschaften“ über den Namen abfragen:

{% for properties in page.product.properties %}
	{% if (properties.translated.name =="cotton") or (properties.translated.name =="wool") %}
		{{ properties.translated.name }}
	{% endif %}
{% endfor %}

Dann müsstest du aber jedes Mal, wenn du den Namen einer Eigenschaft änderst, auch den Code im Template anpassen. Besser wäre es also über die Id der Eigenschaft, die kannst du dir im Frontend so anzeigen lassen:

{% for properties in page.product.properties %}
	{{ properties.translated.name }}
	{{ properties.id }}<br/><br/>
{% endfor %}

Und dann kannst du über die ID wieder nur bestimmte Eigenschaften anzeigen lassen:

{% for properties in page.product.properties %}
	{% if (properties.id =="0accabc306a54bcca618339675d14efd") or (properties.id =="93e38a92ca0448e999925ee03b063627") %}
		{{ properties.translated.name }}
	{% endif %}
{% endfor %}

Wie viele bestimmte Eigenschaften willst du den ungefähr anzeigen? 3, 10, 5000? Wenn es viele sind, wäre es übersichtlicher die Ids der Eigenschaften in einem Array zu hinterlegen, und dann abzufragen, ob die Eigenschafts-ID im Array ist.

Oder geht es darum, die Eigenschaften einer oder mehrerer bestimmter Eigenschaftsgruppen anzuzeigen? Also alle Eigenschaften der Eigenschaftsgruppe z.B. Farbe anzeigen ohne „Blau“, „Rot“, „Grün“, „Schwarz“ auszuwählen?

Im Grunde geht es nur darum, dass eine bestimmte Eigenschaft nochmal an anderer Stelle gesondert hervorgehoben wird. Also z.B. bei „Land: Deutschland“ soll an andere Stelle nochmal „Deutschland“ ausgegeben werden.

Willst du „Land: XXX“ immer nur ausgeben wenn es Deutschland ist oder auch wenn es z.B. andere Länder sind?

es sollen auch andere Länder ausgegeben werden. Also z.B. alles aus der Kategorie „Land“.

Danke für deine Hilfe :slight_smile:

Ok, dann könntest du das über die Group ID machen, also dir erstmal die Group ID aller Eigenschaften anzeigen:

{% for properties in page.product.properties %}
	{{ properties.translated.name }}
	{{ properties.groupId }}<br/><br/>
{% endfor %}

Und dann bekommst du sowas in der Art angezeigt
Deutschland 008a77203b0f4714bbf0fd42238c7e32

Diese Id fügst du dann in die if-Abfrage ein:

{% for properties in page.product.properties %}
	{% if properties.groupId =="008a77203b0f4714bbf0fd42238c7e32" %}
		Land: {{ properties.translated.name }}
	{% endif %}
{% endfor %}

Dann solltest du Land: Deutschland oder welches Land auch immer angezeigt bekommen.

Super, das probiere ich mal aus. Danke dir, Tom!

Hallo Tom,

es funktioniert super, danke!

Wie wäre der Code dann für das Listing? Folgendes funktioniert nämlich nicht:

{% for properties in product.properties %}
{{ properties.translated.name }}
{{ properties.groupId }}


{% endfor %}

Moin,

du kannst dir mit {{dump(product)}} in der \views\storefront\component\product\card\box-standard.html.twig (je nachdem welches Layout du ausgewählt hast, minimaler Inhalt oder Standard) alle Variabeln des Produktes anzeigen lassen.

Hier werden nur die propertyIds angezeigt, ich glaube, das hat Performance-Gründe das nur die Ids und nicht die kompletten Informationen der Eigenschaften für alle Produkte geladen werden. Um die kompletten Eigenschaften im Listing zu laden sind größere Anpassungen nötig, da weiß ich aber leider auch nicht wie das geht.

Um das ganze zu umgehen, kannst du die Eigenschafts-IDs manuell abfragen und jeweils das richtige Land ausgeben, die Länder zu den Ids müsstest du wieder auf der Detailseite abfragen:

{% if "6ca01f92deca4488b36ad31b7d8bc339" in product.propertyIds %}
Deutschland
{% elseif "0accabc306a54bcca618339675d14efd" in product.propertyIds %}
Frankreich
{% endif %}

Viele Grüße
Tom