If Child-Abfrage in meta.html.twig - Hilfe gesucht

Hallo Zusammen,
Suche für die bedingte Ausgabe von hreflang die Bedingung „ist nicht Child-Artikel?“

Abfragen wie

{% if page.product.parent %}
    {# Kindartikel #}
    {# Ihre Logik hier ... #}
{% elseif page.product %}
    {# Übergeordneter Artikel #}
    {# Ihre Logik hier ... #}
{% endif %}

funktionieren leider nicht.

Entweder ist die Abfrage der Variable falsch, oder ist immer leer.
Hab auch mit diesen Variablen versucht ein Ergebnis zu bekommen:

  • if page.product.children is empty
  • if page.product.type == ‚product‘

Ich bekomme jedoch Werte zurück für:
{{ page.product.parentId }}
{{page.product.id}}
Leider kann ich daraus keine Logik entwickeln.
Lediglich auswerten, ob „Vater/ Kind-“ oder „Single-Artikel“

Hat jemand eine schlaue Idee, wie ich das ermitteln kann?

Wenn nicht Kind-Artikel dann Aktion, sonst nix.
Abfrage in meta.html.twig.

Freue mich über jeden Vorschlag.
Beste Grüße,
Tom

Ich denke im Standard wird die Parent association nicht mit geladen, daher wird product.parent null sein.

Beim Laden des Produktes müsste man an der entsprechenden Stelle der criteria die parent association hinzufügen.

ja sieht so aus, dass die Variable leer ist.

und was wäre die „entsprechende Stelle“ und wie müsste man das hinzufügen?

Hallo Tom,
meinst Du sowas?

{% if page.product.parentId %}
    Artikel ist Variantenartikel
{% else %}
    Artikel ist Hauptartikel
{% endif %}

Hi Hartmut,
so dachte ich auch schon. Leider wirft er die parentId auch beim Hauptartikel aus.
Mit dieser Logik-Abfrage funktioniert das leider nicht.
Nach letztem Erkenntnis hab ich gar keine Chance, weil shopware 6 hier quasi „schummelt“.
Es gibt keine eigentlich URL für den Vater, wenn auch da eine SEO-URL vergeben wird, so wird der Inhalt eines Kindes angezeigt.

Es muss eine andere Logik her.
Aber da kenne ich die Variable nicht.
Abfrage:
if „angezeigte URL im Browser“ == „canonical url“ → hauptartikel
else Kind oder so.

Wie frage ich die angezeigte Url ab?

alles ganz schon besonders bei sw6.
vg Tom

Da habe ich Dich vermutlich falsch verstanden. Weil, zumindest wie ich das verstehe, gibt es ja bei Variantenartikeln in SW6 keine Hauptartikel im Frontend mehr, die irgendwie detektiert werden könnten, da diese ja nur als Container im Hintergrund dienen. Ich bin davon ausgegangen, die Logik soll einfach nur erkennen, ob irgendein x-beliebiger Artikel ein Variantenartikel (page.product.parentId gefüllt) ist oder ein Nicht-Variantenartikel (page.product.parentId nicht gefüllt) und das funktioniert bei mir im Shop tadellos.

Sooooo, nachdem mir jetzt mehrere Agenturen absagten, da die Vater-url ja nur virtuell sei, wäre das wohl nicht möglich.
Und doch hab ich eine eine Lösung gefunden:

{% sw_extends ‚@Storefront/storefront/page/product-detail/meta.html.twig‘ %}

{# TR: Nachstehende modifizierte hreflangblock. Nur Ausgabe, wenn nicht CHILD #}
{% block layout_head_meta_tags_hreflangs %}
	{% set pathinfoK = app.request.pathInfo|replace({'/detail/': ''}) %}
	{% if page.product.parentId is empty or page.product.parentId == pathinfoK %}
		{% for link in hrefLang %}
			<link rel="alternate" hreflang="{{ link.locale }}" href="{{ link.url }}">
		{% endfor %}
	{% endif %}
{% endblock %}

Freue mich, wenn es jemand auch hilft.