# Kaufen aus dem Listing via Plugin einschränken

**URL:** https://forum.shopware.com/t/kaufen-aus-dem-listing-via-plugin-einschraenken/92797
**Category:** Shopware 5
**Created:** [5. Februar 2022 um 09:10 UTC](https://forum.shopware.com/t/kaufen-aus-dem-listing-via-plugin-einschraenken/92797 "2022-02-05T09:10:43Z")
**Posts on this page:** 2
**Page:** 1

<div class="post-metadata">

### Author: ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)
#### Post date: [5. Februar 2022 um 09:10 UTC](https://forum.shopware.com/t/kaufen-aus-dem-listing-via-plugin-einschraenken/92797/1 "2022-02-05T09:10:43Z")

</div>

Hallo,

wenn „displayListingBuyButton“ im Shop konfiguriert wurde, ist es ja möglich schon im Listing, Artikel in den Warenkorb zu werfen. Ich möchte über ein Plugin diese Funktion u.U. abschalten können. Ich habe dazu box-basic.tpl entsprechend erweitert:

```auto
{extends file='parent:frontend/listing/product-box/box-basic.tpl'}

{block name="frontend_listing_box_article_buy"}
    {if {config name="displayListingBuyButton"} && $PluginConfig.MeineBedingungErfüllt}
        <div class="product--btn-container">
            {if $sArticle.allowBuyInListing}
                {include file="frontend/listing/product-box/button-buy.tpl"}
            {else}
                {include file="frontend/listing/product-box/button-detail.tpl"}
            {/if}
        </div>
    {/if}
{/block}

```

Das Ganze funktioniert genau für so viele Artikel, wie in den Storefront-Einstellungen für „Artikel pro Seite“ festgelegt wurde (Standard: 12). Danach wird wieder die box-basic.tpl vom Theme abgearbeitet und meine Änderungen sind futsch. Wie erklärt sich dieses Verhalten ?

Wenn ich die Anpassungen direkt in meinem, von Bare abgeleiteten, Theme mache, geht es problemlos.

Gibt es eine Möglichkeit solche Dinge auch via Plugin zu lösen, also auch ohne Theme-Änderungen?

---

<div class="post-metadata">

### Author: ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)
#### Post date: [6. Februar 2022 um 09:42 UTC](https://forum.shopware.com/t/kaufen-aus-dem-listing-via-plugin-einschraenken/92797/2 "2022-02-06T09:42:21Z")

</div>

Hallo,

ich habe die Lösung selber gefunden 🙂. Es liegt am Subscriber-Event. Mit _Legacy\_Struct\_Converter\_Convert\_List\_Product_ kommt man an alle Artikel im Listing ran:

```auto
/**
     * {@inheritdoc}
     */
    public static function getSubscribedEvents()
    {
        return [
            'Enlight_Controller_Action_PostDispatchSecure_Frontend' => 'onPostDispatch',
            'Legacy_Struct_Converter_Convert_List_Product' => 'onListProduct',
            'Theme_Compiler_Collect_Plugin_Less' => 'addLessFiles'
        ];
    }

```

In _onListProduct_ kann man dann die gewünschten Änderungen, in meinem Fall bzgl. _allowBuyInListing_, machen:

```auto
public function onListProduct(\Enlight_Event_EventArgs $args)
    {
        $article = $args->getReturn();

        $stopBuy = $this->configReader->getByPluginName($this->pluginName, Shopware()->Shop())['active'];
        if ( $article['allowBuyInListing'] and $stopBuy ) $article['allowBuyInListing'] = 0;

        return $article;
    }

```
