Ausgabe von einzelnen Eigenschaften in der Kategorieübersicht

Hallöchen,

ich habe ein kleines Vorhaben, denn ich würde gerne in der product-card vereinzelte Ausgaben der Eigenschaften darstellen, nur leider finde ich keinen Ansatz oder ein Eintrag in der Docs.

Dort wo ich bereits die Liste mit den 3 Eigenschaften erstellt habe, sollte dementsprechend auch die Ausgabe dargestellt werden. Welche Variablen und Abfragen benötige ich hier für oder wo kann ich etwas ähnliches ansehen? In der Produktübersicht bei den Eigenschaften wird ja nur die komplette Tabelle der eingepflegten Eigenschaften ausgegeben.

Ich bedanke mich schon mal herzlich für jeden Ansatz, der mir dabei helfen könnte :slight_smile:

Am besten machst mal einen dump auf die Vars im Template…

 In /src/Storefront/Resources/views/storefront/page/product-detail/index.html.twig 

auf

{{ dump(page.product) }}

 

Beispiel Output

Shopware\Core\Content\Product\SalesChannel\SalesChannelProductEntity {#4826 ▼
  #calculatedListingPrice: Shopware\Core\Framework\DataAbstractionLayer\Pricing\CalculatedListingPrice {#5695 ▶}
  #calculatedPrices: Shopware\Core\Checkout\Cart\Price\Struct\PriceCollection {#5702 ▶}
  #calculatedPrice: Shopware\Core\Checkout\Cart\Price\Struct\CalculatedPrice {#5703 ▶}
  #sortedProperties: Shopware\Core\Content\Property\PropertyGroupCollection {#5229 ▶}
  #isNew: false
  #parentId: null
  #childCount: 0
  #autoIncrement: 49
  #taxId: "9dd85d4795924413aa926cef41e358bc"
  #manufacturerId: "e8e18bedb91042388a75d469d7f7462a"
  #unitId: null
  #active: true
  #displayGroup: "26a614f29612bb540eda7ac183e79784"
  #price: Shopware\Core\Framework\DataAbstractionLayer\Pricing\PriceCollection {#4823 ▶}
  #manufacturerNumber: null
  #ean: null
  #productNumber: "7427f766b0704511ba7f8b74cb005c27"
  #stock: 28
  #availableStock: 28
  #available: true
  #deliveryTimeId: null
  #deliveryTime: null
  #restockTime: 3
  #isCloseout: false
  #purchaseSteps: 1
  #maxPurchase: null
  #minPurchase: 1
  #purchaseUnit: null
  #referenceUnit: null
  #shippingFree: false
  #purchasePrice: null
  #markAsTopseller: null
  #weight: null
  #width: null
  #height: null
  #length: null
  #releaseDate: null
  #categoryTree: array:3 [▶]
  #optionIds: null
  #propertyIds: array:18 [▶]
  #name: "Aerodynamic Aluminum Pray and Play"
  #keywords: null
  #description: "Ut possimus et accusantium illum beatae perspiciatis. Doloribus sunt eius aliquam voluptatem excepturi numquam qui. Expedita tenetur dignissimos sequi temporibu ▶"
  #metaDescription: null
  #metaTitle: null
  #packUnit: null
  #variantRestrictions: null
  #configuratorGroupConfig: null
  #tax: Shopware\Core\System\Tax\TaxEntity {#4813 ▶}
  #manufacturer: Shopware\Core\Content\Product\Aggregate\ProductManufacturer\ProductManufacturerEntity {#5397 ▶}
  #unit: null
  #prices: Shopware\Core\Content\Product\Aggregate\ProductPrice\ProductPriceCollection {#5496 ▶}
  #listingPrices: Shopware\Core\Framework\DataAbstractionLayer\Pricing\ListingPriceCollection {#4819 ▶}
  #cover: Shopware\Core\Content\Product\Aggregate\ProductMedia\ProductMediaEntity {#5402 ▶}
  #parent: null
  #children: null
  #media: Shopware\Core\Content\Product\Aggregate\ProductMedia\ProductMediaCollection {#5426 ▶}
  #searchKeywords: null
  #translations: null
  #categories: null
  #tags: null
  #properties: Shopware\Core\Content\Property\Aggregate\PropertyGroupOption\PropertyGroupOptionCollection {#5680 ▶}
  #options: null
  #configuratorSettings: null
  #categoriesRo: null
  #coverId: "5ae7e75d79a94ae89c1c153c390b6a3f"
  #blacklistIds: null
  #whitelistIds: null
  #customFields: null
  #visibilities: null
  #tagIds: null
  #productReviews: null
  #ratingAverage: null
  #mainCategories: Shopware\Core\Content\Seo\MainCategory\MainCategoryCollection {#5492 ▶}
  #seoUrls: null
  #orderLineItems: null
  #crossSellings: null
  #_uniqueIdentifier: "2e6b50aa64f247d3a3f86e2696c62677"
  #versionId: "0fa91ce3e96a4bc2be4bd9ce752c3425"
  #translated: array:7 [▶]
  #createdAt: DateTimeImmutable @1575638842 {#5407 ▶}
  #updatedAt: null
  #extensions: array:1 [▶]
  #id: "2e6b50aa64f247d3a3f86e2696c62677"
  +"parentVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425"
  +"productManufacturerVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425"
  +"productMediaVersionId": null

 

@benblub‍

Ich hab das wie beschrieben dort eingefügt, nur sobald ich das Theme compile und den Cache lösche, schmeißt mir Shopware auf der Produktdetailseite ein “Leider ist etwas schief gelaufen” aus…

Hast du Shopware in der PROD oder DEV Version am laufen? Im PROD Mode sollte Twig Debug nicht gehen, wenn du in var/log Ordner schaust hast entweder ein prod.log oder dev.log. Bei einem prod.log sollte sowas wie unbekannte Twig Funktion drin stehen.

Du kannst im .env dev/prod setzen.

1 „Gefällt mir“

So, hab die Umgebung auf “dev” gesetzt und bekomme jetzt den Dump. Danke erstmal dafür :slight_smile:

Das kam aus dem Output, hab auch soweit die properties Reiter geöffnet um die es gehen soll:

SalesChannelProductEntity {#3923 ▼
  #calculatedListingPrice: CalculatedListingPrice {#4502 ▶}
  #calculatedPrices: PriceCollection {#4510 ▶}
  #calculatedPrice: CalculatedPrice {#4516 ▶}
  #sortedProperties: PropertyGroupCollection {#4463 ▶}
  #isNew: false
  #parentId: null
  #childCount: 0
  #autoIncrement: 1
  #taxId: "0576e21800074652ad4de64b565754a5"
  #manufacturerId: "c14297249dda4a4b8364f482694e5eb2"
  #unitId: "08f08846d790417aa6a8b2935b47a087"
  #active: true
  #displayGroup: "dd58b4b6c597e50a34ca0f3738f8da0e"
  #price: PriceCollection {#3915 ▶}
  #manufacturerNumber: null
  #ean: null
  #productNumber: "9252"
  #stock: 500
  #availableStock: 497
  #available: true
  #deliveryTimeId: "0699bf9b13ac4c8c8317e28a58b7d89a"
  #deliveryTime: DeliveryTimeEntity {#3917 ▶}
  #restockTime: 3
  #isCloseout: false
  #purchaseSteps: 1
  #maxPurchase: null
  #minPurchase: 1
  #purchaseUnit: 0.75
  #referenceUnit: 1.0
  #shippingFree: false
  #purchasePrice: 7.99
  #markAsTopseller: true
  #weight: null
  #width: null
  #height: null
  #length: null
  #releaseDate: null
  #categoryTree: array:3 [▶]
  #optionIds: null
  #propertyIds: array:8 [▶]
  #additionalText: null
  #name: "Papale Linea Oro Primitivo di Manduria"
  #keywords: null
  #description: "Der Papale(päpstliche) Oro Primitivo di Manduria DOP kommt vom Weingut Varvaglione in Apulien.  Dieser grandiose Primitivo besticht durch ein volles u ▶"
  #metaTitle: null
  #packUnit: "Flasche(n)"
  #variantRestrictions: null
  #configuratorGroupConfig: null
  #tax: TaxEntity {#3758 ▶}
  #manufacturer: ProductManufacturerEntity {#3881 ▶}
  #unit: UnitEntity {#3916 ▶}
  #prices: ProductPriceCollection {#4313 ▶}
  #listingPrices: ListingPriceCollection {#3911 ▶}
  #cover: ProductMediaEntity {#3831 ▶}
  #parent: null
  #children: null
  #media: ProductMediaCollection {#4282 ▶}
  #searchKeywords: null
  #translations: null
  #categories: null
  #tags: null
  #properties: PropertyGroupOptionCollection {#4464 ▼
    #elements: array:8 [▼
      "241a28c1f8014bc38bd9a661730ec7cd" => PropertyGroupOptionEntity {#4309 ▶}
      "4a4b0b79ddfb4626ac48857cf583ee28" => PropertyGroupOptionEntity {#4409 ▶}
      "61a442868a964cb0957fa006e3c812d9" => PropertyGroupOptionEntity {#4418 ▼
        #groupId: "da4004dc79384439b30a48b8100fb138"
        #name: "Rotwein"
        #position: 1
        #colorHexCode: "#c02626"
        #mediaId: null
        #group: PropertyGroupEntity {#4427}
        #translations: null
        #productConfiguratorSettings: null
        #productProperties: null
        #productOptions: null
        #media: null
        #customFields: null
        -configuratorSetting: null
        -combinable: null
        #_uniqueIdentifier: "61a442868a964cb0957fa006e3c812d9"
        #versionId: null
        #translated: array:3 [▶]
        #createdAt: DateTimeImmutable @1575468966 {#4430 ▶}
        #updatedAt: null
        #extensions: []
        #id: "61a442868a964cb0957fa006e3c812d9"
      }
      "69c650e11e3c44e58240578e122ddeaa" => PropertyGroupOptionEntity {#4426 ▼
        #groupId: "69506871248242d68230bd59283e982d"
        #name: "Apulien"
        #position: 3
        #colorHexCode: null
        #mediaId: null
        #group: PropertyGroupEntity {#4433}
        #translations: null
        #productConfiguratorSettings: null
        #productProperties: null
        #productOptions: null
        #media: null
        #customFields: null
        -configuratorSetting: null
        -combinable: null
        #_uniqueIdentifier: "69c650e11e3c44e58240578e122ddeaa"
        #versionId: null
        #translated: array:3 [▶]
        #createdAt: DateTimeImmutable @1575469076 {#4436 ▶}
        #updatedAt: DateTimeImmutable @1576160150 {#4434 ▶}
        #extensions: []
        #id: "69c650e11e3c44e58240578e122ddeaa"
      }
      "ce81f9f556ab4ab691a75b43abed9e47" => PropertyGroupOptionEntity {#4432 ▶}
      "d1a8247612274e66a1dd9dea42c7bc8d" => PropertyGroupOptionEntity {#4440 ▶}
      "d2c6228b749c4900a9bdf836eb9e1a71" => PropertyGroupOptionEntity {#4448 ▶}
      "e6b8f86edfb942928f2044fdb0843350" => PropertyGroupOptionEntity {#4456 ▼
        #groupId: "5f033a7a8c6b44dfac159673e5eac7ab"
        #name: "Primitivo"
        #position: 1
        #colorHexCode: "#fb5b5b"
        #mediaId: null
        #group: PropertyGroupEntity {#4465}
        #translations: null
        #productConfiguratorSettings: null
        #productProperties: null
        #productOptions: null
        #media: null
        #customFields: null
        -configuratorSetting: null
        -combinable: null
        #_uniqueIdentifier: "e6b8f86edfb942928f2044fdb0843350"
        #versionId: null
        #translated: array:3 [▶]
        #createdAt: DateTimeImmutable @1575468873 {#4468 ▶}
        #updatedAt: DateTimeImmutable @1576155629 {#4466 ▶}
        #extensions: []
        #id: "e6b8f86edfb942928f2044fdb0843350"
      }
    ]
    #extensions: []
  }
  #options: null
  #configuratorSettings: null
  #categoriesRo: null
  #coverId: "48539708b16f4e948256227a5b5700d2"
  #blacklistIds: null
  #whitelistIds: null
  #customFields: array:14 [▶]
  #visibilities: null
  #tagIds: array:4 [▶]
  #productReviews: null
  #ratingAverage: 5.0
  #_uniqueIdentifier: "18ed48d9054a42829fe07e2b246a72d4"
  #versionId: "0fa91ce3e96a4bc2be4bd9ce752c3425"
  #translated: array:7 [▶]
  #createdAt: DateTimeImmutable @1575468493 {#3880 ▶}
  #updatedAt: DateTimeImmutable @1576232574 {#4183 ▶}
  #extensions: []
  #id: "18ed48d9054a42829fe07e2b246a72d4"
  +"parentVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425"
  +"productManufacturerVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425"
  +"productMediaVersionId": null
}
{{ dump(page.product.properties["69c650e11e3c44e58240578e122ddeaa"].name) }}

Du kannst auf alles was du siehst zugreifen wenn das hast was du brauchst kannst das dump() wegnehmen und musst es halt noch an die richtige Stellen im Template setzen. Über die Elemente musst du ggf. iterieren das ich denke sich die IDs ändern von Produkt zu produkt aber einfach mal ausprobieren. 

 

{% for element in elements %}
 ...
{% endfor %}

Ggf. kann ich heute Abend testen wenn Zeit hab.

Hallöchen, ich melde mich mal wieder deswegen.
Wir haben auf die 6.1 RC3 gewechselt und jetzt wollen wir diese Änderung dort endlich fertig stellen.

Also ich habe jetzt einen Dump darauf erstellt und habe festgestellt, dass properties plötzlich auf null steht, obwohl die ganz sicher eingepflegt sind.
Hier der Dump:
 

Shopware\Core\Content\Product\SalesChannel\SalesChannelProductEntity {#5993 ▼
  #calculatedListingPrice: Shopware\Core\Framework\DataAbstractionLayer\Pricing\CalculatedListingPrice {#6060 ▶}
  #calculatedPrices: Shopware\Core\Checkout\Cart\Price\Struct\PriceCollection {#6068 ▶}
  #calculatedPrice: Shopware\Core\Checkout\Cart\Price\Struct\CalculatedPrice {#6074 ▶}
  #sortedProperties: null
  #isNew: false
  #parentId: null
  #childCount: 0
  #autoIncrement: 1
  #taxId: "7e39825695164473b4ff158005910a28"
  #manufacturerId: "99d10a0f320345c580e0587a17f05453"
  #unitId: "e9f6d4b656ff4349b2b427b31db1441c"
  #active: true
  #displayGroup: "1650b0d96724821fa5fc06e04fd733bb"
  #price: Shopware\Core\Framework\DataAbstractionLayer\Pricing\PriceCollection {#6001 ▶}
  #manufacturerNumber: null
  #ean: null
  #productNumber: "9252"
  #stock: 121
  #availableStock: 120
  #available: true
  #deliveryTimeId: "7fa4ead0b26a40c38d25bb068935af88"
  #deliveryTime: Shopware\Core\System\DeliveryTime\DeliveryTimeEntity {#6003 ▶}
  #restockTime: 0
  #isCloseout: false
  #purchaseSteps: 1
  #maxPurchase: null
  #minPurchase: 1
  #purchaseUnit: 0.75
  #referenceUnit: 1.0
  #shippingFree: false
  #purchasePrice: 18.99
  #markAsTopseller: true
  #weight: null
  #width: null
  #height: null
  #length: null
  #releaseDate: null
  #categoryTree: array:3 [▶]
  #optionIds: null
  #propertyIds: array:8 [▶]
  #name: "Papale Linea Oro Primitivo di Manduria"
  #keywords: null
  #description: "Der Papale(päpstliche) Oro Primitivo di Manduria DOP kommt vom Weingut Varvaglione in Apulien.  Dieser grandiose Primitivo besticht durch ein volles und se ▶"
  #metaDescription: null
  #metaTitle: null
  #packUnit: "Flasche(n)"
  #variantRestrictions: null
  #configuratorGroupConfig: null
  #tax: Shopware\Core\System\Tax\TaxEntity {#6007 ▶}
  #manufacturer: null
  #unit: Shopware\Core\System\Unit\UnitEntity {#6011 ▶}
  #prices: Shopware\Core\Content\Product\Aggregate\ProductPrice\ProductPriceCollection {#6033 ▶}
  #listingPrices: Shopware\Core\Framework\DataAbstractionLayer\Pricing\ListingPriceCollection {#6002 ▶}
  #cover: Shopware\Core\Content\Product\Aggregate\ProductMedia\ProductMediaEntity {#6015 ▶}
  #parent: null
  #children: null
  #media: null
  #searchKeywords: null
  #translations: null
  #categories: null
  #tags: null
  #properties: null
  #options: null
  #configuratorSettings: null
  #categoriesRo: null
  #coverId: "d70d4e89fa084752a4d0346e48b92663"
  #blacklistIds: null
  #whitelistIds: null
  #customFields: null
  #visibilities: null
  #tagIds: null
  #productReviews: null
  #ratingAverage: null
  #mainCategories: null
  #seoUrls: null
  #orderLineItems: null
  #crossSellings: null
  #_uniqueIdentifier: "9d26cf320ac941eba107de5d05a5d76d"
  #versionId: "0fa91ce3e96a4bc2be4bd9ce752c3425"
  #translated: array:7 [▶]
  #createdAt: DateTimeImmutable @1576591357 {#6020 ▶}
  #updatedAt: DateTimeImmutable @1577109202 {#6019 ▶}
  #extensions: array:1 [▶]
  #id: "9d26cf320ac941eba107de5d05a5d76d"
  +"parentVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425"
  +"productManufacturerVersionId": "0fa91ce3e96a4bc2be4bd9ce752c3425"
  +"productMediaVersionId": null
}

 

Hallo zusammen. Ich schließe mich hier mal an, da ich Ähnliches versuche. In der Product-Box im Listing werden die sortedProperties nicht ausgegeben (sind immer NULL). Nur auf der Detailseite. Habt ihr eine Lösug gefunden, innerhalb der Product-Box auf die Eigenschaften zuzugreifen?

Danke und Gruß,
Ben

Moin Zusammen,

die properties werden (nicht mehr?) im Listing ausgegebn, da muss (mal wieder :() ein Plugin her, siehe hier: https://forum.shopware.com/discussion/67641/produkt-eigenschaften-im-listing-get-article-properties-in-listing

Die zugehörige services.xml sieht bei mir bisher so aus:

Damit hat man immerhin die properties und die zugehörigen groups. Aber eben immer noch nicht sortiert unter sortedProperties. Kann man natürlich ungelenk im Tiwg-Template nachbauen, aber schöner wäre es natürlich per PHP im Vorhinein.

Da stehe ich aber grade auf dem Schlauch.

Beste Grüße,
devnullroot

Guten Abend alle zusammen,

vielen Dank erstmal für die in dieser Diskussion eingebrachten Hilfestellungen bezüglich des Anzeigens von Eigenschaften im Produktlisting. Zusammen mit der Diskussion https://forum.shopware.com/discussion/67641/produkt-eigenschaften-im-listing-get-article-properties-in-listing zu folgender Lösung gekommen:

class ListingPropertiesSubscriber implements EventSubscriberInterface
{
    public static function getSubscribedEvents()
    {
        return [
            ProductListingCriteriaEvent::class => 'handleListingRequest',
        ];
    }

    public function handleListingRequest(ProductListingCriteriaEvent $event): void
    {
        $event->getCriteria()->addAssociation('properties.group')
    }
}

Mit der es mir möglich ist auf die Eigenschaften zuzugreifen. Allerdings frage ich mich, ob es eine komfortablere Möglichkeit gibt als über die Propertygroups zu iterieren und die Property- und Option-IDs zu vergleichen.

Falls hierzu jemand noch einen Tipp hat wäre ich sehr dankbar. Stehe da irgendwie auf dem Schlauch.

Beste Grüße aus der Grafschaft Bentheim

Christian

2 „Gefällt mir“

So, war gar nicht so kompliziert wie ich dachte Smile

Im Subscriber folgenden Event hinzufügen:

ProductEvents::PRODUCT_LOADED_EVENT => "onProductLoaded"

Die Methode sieht dann grob so aus:

public function onProductLoaded(EntityLoadedEvent $event): void
{
    if ( !($event->getContext()->getSource() instanceof \Shopware\Core\Framework\Api\Context\SalesChannelApiSource) ) {
        return;
    }

    foreach ($event->getEntities() as $productEntity) {
        /** @var SalesChannelProductEntity $productEntity */
        $properties = $productEntity->getProperties();
        $grouped = $properties->groupByPropertyGroups();
        $grouped->sortByPositions();
        $grouped->sortByConfig();
        $productEntity->setSortedProperties( $grouped );
    }
}

Damit ist dann sortedProperties gefüllt, sortiert nach Backendeinstellung und sauber gruppiert. Zur Ausgabe kann man ohne große Änderungen den Block aus page/product-detail/properties.html.twig nehmen. Ungefähr so:

    {# @var product \Shopware\Core\Content\Product\SalesChannel\SalesChannelProductEntity #}
    {% for group in product.sortedProperties %}
        
            {{ group.translated.name|e }}:
            
                {% apply spaceless %}
                    {% for option in group.options %}
                        {% set i = ( i | default(0) ) + 1 %}
                        {% if i > 1 %}, {% endif %}{{ option.translated.name|e }}
                    {% endfor %}
                {% endapply %}
            
        
    {% endfor %}

 Fertig!

 Beste Grüße,
 devnullroot

3 „Gefällt mir“

Hey devnullroot,

vielen Dank für deine Lösung. Sie hat mir wirklich weitergeholfen. Hast du vielleicht noch einen Tipp. Wie man auf einzelne Eigenschaften zugreifen kann, ohne durch die das komplette “options”-Array iterieren zu müssen und den Namen zu vergleichen?

Vielen Dank und beste Grüße

Christian

Moin @rademakeronline‍ ,

mmmh, wenn ich dich richtig verstehe, möchtest Du direkten Zugriff auf einzelne Eigenschaften, also quasi die Eigenschaften als Key? Dann wirst Du wohl so oder so iterieren - entweder ungelenk in Twig, oder Du bereitest dir die Eigenschaften in der onProductLoaded vor. Du könntest die Daten dann z.B. in ein CustomProperty schreiben (Shopware 6: Entity extension) und darauf dann im Template zugreifen. Vielleicht gibt es auch entsprechende Methoden im Core, das weiß ich aber nicht.

Beste Grüße,
devnullroot

Hallo zusammen,

ich habe eure Diskussion gelesen und wollte nachfragen ob die Lösung auf funktioniert wenn die Bilder bei Eigenschaften auf der Artikel Detail Seite ausgeben will? Diese werden bei einem {{dump()}} im Listing angezeigt jedoch wird der Media Pfad auf der Artikel detailseite nicht ausgegeben. 

Hat jemand hierfür eine Idee/Tipp? 

Wäre euch super dankbar da ich echt schon lange daran hänge. Danke!

Hey!

Habe die beiden Threads zu dem Thema mit viel Vorfreude durchgelesen und durchgearbeitet, allerdings leider ohne Erfolg :frowning: Ist die Lösung nach wie vor valide? Es treibt mich grad zum Wahnsinn, dass man nicht out-of-the-box Zugriff auf die Produkteigeschaften in den Produkt-Listen hat. Ich habe keine Dev-Umgebung zur Hand und kann deswegen auch kein debug aufrufen, was das ganze noch schwieriger für mich macht. Ich bin auf Shopware Version 6.3.5.0.

Ich habe ein Subscriber-Plugin eingebunden, das wie hier beschrieben auf “onProductsLoaded” horcht und die sortedProperties befüllen sollte. Die Funktion wird auch ausgeführt, habe da mal testweise ein paar echos/var_dumps in den PHP-Code eingebunden um das nachzuvollziehen. Sieht auf den ersten Blick alles gut aus. Im Template kommt dann aber trotzdem nichts raus, wenn ich über product.sortedProperties iteriere.

Den Code habe ich minimal erweitert, da bei mir noch eine Exception geflogen ist. So sieht das aktuell aus:

    public function onProductsLoaded(EntityLoadedEvent $event): void
    {
        if ( !($event->getContext()->getSource() instanceof \Shopware\Core\Framework\Api\Context\SalesChannelApiSource) ) {
            return;
        }
    
        foreach ($event->getEntities() as $productEntity) {
            // /** @var SalesChannelProductEntity $productEntity */
            $properties = $productEntity->getProperties();
            if ($properties) {
              $grouped = $properties->groupByPropertyGroups();
              $grouped->sortByPositions();
              $grouped->sortByConfig();
              $productEntity->setSortedProperties( $grouped );
            }
        }
    }

Irgendwelche Ideen?

Moin eduke,

das läuft bei mir immer noch genau so wie ich es hier gepostet habe (bis auf die zusätzliche if-Abfrage, die Du ja auch schon eingbaut hast ;))

Für debug Ausgaben brauchts Du keine dev Umgebung, das Production Template reicht.

Wenn Du im Theme in der src/Resources/views/storefront/component/product/card/box-standard.html.twig mal {{ dump(product) }} machst, tauchen die Eigenschaften da nicht auf?

(Solltest Du allerdings direkt auf der deployten Version arbeiten, hast Du tatsächlich kein dump - ich rate dann dringend zum Production-Template, ansonsten macht das ja keinen Spaß…).

 

Beste Grüße,
devnullroot

@eduke schrieb:

Ich bin auf Shopify Version 6.3.5.0.

dann wird’s hier schwierig :wink:
scnr 

Ha, meinte natürlich Shopware :wink: Freudscher Verschreiber.

Werd mir dann mal das Production-Template für besseres Debugging aufsetzen. Dann ergibt sich vielleicht auch, warum das bei mir bisher nicht klappt.
Falls sich was ergibt, werde ich das hier nochmalt niederschreiben für den Fall, dass jemand anderes das gleiche Problem hat.

Versuch mich auch gerade an der Lösung - komme aber nicht groß weiter.
Kann von Euch jemand den gesamten Inhalt des Subscribers posten?
Komme nicht ganz mit den benötigten „use“ Sachen nach.