Hallo,
Wie kann ich die Eigenschaften im Listing ausgeben?
Wenn ich {{dump(product)}} mache, habe ich nur propertyIds.
Mit freundlichen Grüßen
Amin Nayerhabibi
Hallo,
Wie kann ich die Eigenschaften im Listing ausgeben?
Wenn ich {{dump(product)}} mache, habe ich nur propertyIds.
Mit freundlichen Grüßen
Amin Nayerhabibi
Du musst das Criteria-Objekt zum Auslesen der Produkte im Listing erweitern, um die Properties mit auszulesen.
Du musst das Criteria-Objekt zum Auslesen der Produkte im Listing erweitern, um die Properties mit auszulesen.
Kannst Du das evtl. ein wenig näher ausführen? Ich würde auch gerne im Listing auf die Properties zugreifen, Deine Antwort hilft mir aber leider nur bedingt weiter.
Hier: Shopware 6: Extending the storefront listing
Du erstellst einen Subscriber für ProductListingCriteriaEvent::class, im Callback machst du dann ein $criteria->addAssociation(‘property’);
sieht dann ungefähr so aus (ungetestet!)
class ExampleListingSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return [
ProductListingCriteriaEvent::class => 'handleRequest',
];
}
public function handleRequest(ProductListingCriteriaEvent $event)
{
$event->getCriteria()->addAssociation('property');
}
}
@uehler Weißt du vielleicht wie man die übersetzte Lables bei Zusatzfelder ausgeben kann, wenn der Zusatzfeld ein Auswahlfeld ist??
ich habe z.B. Zusatzfeld Baujahr und als Option habe ich 2010-2020 und die haben jeweils eine technischer Name und 2 Labels, wenn ich dump mache, bekomme ich nur die technische Name und nicht die Labels.
Danke im Voraus.
Hier: https://docs.shopware.com/en/shopware-platform-dev-en/how-to/extend-storefront-listing
Du erstellst einen Subscriber für ProductListingCriteriaEvent::class, im Callback machst du dann ein $criteria->addAssociation(‚property‘);sieht dann ungefähr so aus (ungetestet!)
class ExampleListingSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return [
ProductListingCriteriaEvent::class => ‚handleRequest‘,
];
}public function handleRequest(ProductListingCriteriaEvent $event)
{
$event->getCriteria()->addAssociation(‚property‘);
}
}
Ich habe das versucht so einzubauen, aber leider kommt im storefront nichts an. Ich habe meine Klasse über services.xml registriert und sie wird auch ausgeführt. Was könnte fehlen?
Edit: Habe ein paar Anpassungen gemacht. Jetzt läuft’s:
class ListingPropertiesSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return [
ProductListingCriteriaEvent::class => 'handleListingRequest',
];
}
public function handleListingRequest(ProductListingCriteriaEvent $event): void
{
$event->getCriteria()->addAssociation('properties');
}
}
Moin @s_verweyen,
dank euerer Vorarbeit konnte auch ich die Properties im Listing auslesen und ausgeben, mit
$event->getCriteria()->addAssociation('properties.group')
ebenfalls die zugehörigen Groups. Danke also schonmal dafür!
Wo ich aber jetzt ein totales Brett vor dem Kopf habe, ist dass ich die propertyGroups natürlich sortiert brauche, das Feld “sortedProperties” des product-Objektes in twig aber “null” ist.
Kann mir vielleicht jemand einen kleinen Schubs in die richtige Richtung geben (ein großer wäre auch ok ;)) ?
Besten Dank und Grüße,
devnullroot
Der Vollständigkeit halber, falls jemand hier landet: Ich habe meine Lösung in diesem Thread geposted:
Genial, danke dir!!!
Leider existiert der Beitrag nicht mehr. Könntest du das vielleicht nochmal posten?
Würde mich nämlich interessieren
Moinsen @AlexBS ,
wie ich sehe, hast Du den Thread schon gefunden, für alle Anderen:
Beste Grüße,
devnullroot
Wer suchet, der findet Danke nochmal, das ist echt hilfreich gewesen.
Für Shopware 6.6 und angepasstes Event, was Performance schonender ist:
services.xml
<service id="XXXXXXXX\Subscriber\ListingPropertiesSubscriber">
<tag name="kernel.event_subscriber" priority="5000"/>
</service>
Subscriber:
namespace XXXXXXXXX\Subscriber;
use Shopware\Core\Content\Product\Events\ProductListingCriteriaEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class ListingPropertiesSubscriber implements EventSubscriberInterface {
public static function getSubscribedEvents(): array
{
return [
ProductListingCriteriaEvent::class => ['addPropertiesGroup', 500],
];
}
public function addPropertiesGroup(ProductListingCriteriaEvent $event): void
{
$event->getCriteria()->addAssociation('properties.group');
}
}