ruppertruppert MemberComments: 18 Received thanks: 3 Member since: October 2015

Hallo Zusammen,

ich würde gerne verstehen wie ich aus einem gegebenen Product-Stream mit der id X alle Artikeln auslesen kann.

Ich habe dazu folgenden Shopware Code gefunden:

$context = $this->container->get('shopware_storefront.context_service')->getShopContext();
$criteria = $this->container->get('shopware_product_stream.criteria_factory')
            ->createCriteria($this->Request(), $context);
$this->container->get('shopware_product_stream.repository')->prepareCriteria($criteria, $streamId);
$products = $this->container->get('shopware_search.product_search')->search($criteria, $context);
$convertedProducts = $this->container->get('legacy_struct_converter')
            ->convertListProductStructList($products->getProducts());

In meinem Fall habe ich aber keinen Request. Ich möchte nur alle Artikel des Streams auslesen. Brauche ich dafür einen Request? Falls ja, wozu? Und geht es auch ohne?

Wäre für alle Hinwese sehr dankbar!

Schöne Grüße,

Nikolaj Ruppert

Answers

  • mbdusmbdus MemberComments: 137 Received thanks: 9 Member since: September 2013

    In einer Kategorie geht das über die KategorieID. In einer Einkaufswelt über die ElementID. Damit kann man dann an die streamId gelangen. Ein Request wird aber benötigt.

  • ruppertruppert MemberComments: 18 Received thanks: 3 Member since: October 2015

    Danke, aber mein Usecase hat nichts mit Kategrien oder Einkaufswelten zutun. Ein Productstream errechnet doch auf die eine oder andere Weise eine Artikelmenge. Diese Artikelmenge hätte ich gerne.

  • mbdusmbdus MemberComments: 137 Received thanks: 9 Member since: September 2013

    Ja, aber irgendwie muss man an die streamId ran kommen. Im Backend wird die streamId direkt übergeben. Im Frontend wird diese über die Kategorie oder Einkaufswelt ausgelesen.

  • ruppertruppert MemberComments: 18 Received thanks: 3 Member since: October 2015

    Ich habe die StreamId. Ich muss nur die Artikeln ein bestimten Streams auslesen.

  • ruppertruppert MemberComments: 18 Received thanks: 3 Member since: October 2015

    Das hier scheint zu funktionieren:

    $streamId = 1;
    $context = Shopware()->Container()->get( 'shopware_storefront.context_service' )->getShopContext();
    $criteria =  new Criteria();
    Shopware()->Container()->get( 'shopware_product_stream.repository' )->prepareCriteria ( $criteria, $streamId );
    $products = Shopware()->Container()->get( 'shopware_search.product_search' )->search ( $criteria, $context );
        

    Also der Unterschied zum oberen Codesnippet ist, dass eine "leere" Criteria übergeben wird.

Sign In or Register to comment.