# Einkaufswelt unter Kategorielisting

**URL:** <https://forum.shopware.com/t/einkaufswelt-unter-kategorielisting/67301>\
**Category:** Themes & Design\
**Created:** [29. Mai 2020 um 07:08 UTC](https://forum.shopware.com/t/einkaufswelt-unter-kategorielisting/67301 "2020-05-29T07:08:03Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![ergobasis](https://avatars.discourse-cdn.com/v4/letter/e/439d5e/32.png) [@ergobasis](https://forum.shopware.com/u/ergobasis)\
**Post date:** [29. Mai 2020 um 07:08 UTC](https://forum.shopware.com/t/einkaufswelt-unter-kategorielisting/67301/1 "2020-05-29T07:08:03Z")

</div>

Hallo Leute,

ich hab mich in das Thema schon gut eingelesen und bin schon relativ weit gekommen, hänge jetzt aber an… ich weiß nicht mal an was! Meiner Ansicht nach müsste das eigentlich funktionieren.

Mein Plan: über Freitext Feld auswählen ob eine Einkafswelt über oder unter dem Listing angezeigt wird.

Schritte:

- Freitextfeld Anlegen ---- erledigt (bei mir „under\_listing“)
- Freitextfeld im Listing auslesbar machen ---- erledigt (mit kleinem Plugin)
- Templatedatei listing/listing.tpl anpassen ---- fail

hier mein aktueller Code:

```
{extends file='parent:frontend/listing/listing.tpl'}

{block name="frontend_listing_emotions"}
	{if $hasEmotion}
        {$fullscreen = false}

        {block name="frontend_listing_emotions"}
            

                {foreach $emotions as $emotion}
                    {if $emotion.attributes.under_listing == 0 || empty($emotion.attributes.under_listing) || $emotion.attributes.under_listing == ""}
						{if $emotion.fullscreen == 1}
							{$fullscreen = true}
						{/if}
						
						
						
					{/if}
                {/foreach}

                {block name="frontend_listing_list_promotion_link_show_listing"}

                    {$showListingCls = "emotion--show-listing"}

                    {foreach $showListingDevices as $device}
                        {$showListingCls = "{$showListingCls} hidden--{$emotionViewports[$device]}"}
                    {/foreach}

                    {if $showListingButton}
                        
                            
                                {s name="ListingActionsOffersLink"}Weitere Artikel in dieser Kategorie »{/s}
                            
                        
                    {/if}
                {/block}
            
        {/block}
    {/if}
{/block}

{* Listing wrapper *}
{block name="frontend_listing_listing_wrapper"}
    {$smarty.block.parent}
{/block}

{* Emotion worlds under Listing *}
{block name="frontend_listing_list_promotion_unten"}
	{if $hasEmotion}

        {block name="frontend_listing_emotions_unten"}
            

                {foreach $emotions as $emotion}
                    {if $emotion.attributes.under_listing == 1}
						
						
						
					{/if}
                {/foreach}
            
        {/block}
    {/if}
{/block}

```

&nbsp;

Ich hab das ganze in einer Staging Umgebung getestet und bekomme als Resultat eine weiße Seite mit&nbsp;

> Service Unavailable
> 
> The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.

Einen Fehler kann ich jetzt nicht feststellen, beim herumprobieren habe ich es auch geschaft, dass alle Einkaufswelten sowohl oben als auch unter dem Listing angezeigt wurden. Jedoch will ich ja über das Freitextfeld bestimmen wo die Einkaufswelt plaziert wird und nicht alles einfach doppelt drin haben.

Hat jemand Erfahrung damit und kann mir weiter helfen?&nbsp;

---

<div class="post-metadata">

**Author:** ![sschreier](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sschreier/32/23296_2.png) [@sschreier](https://forum.shopware.com/u/sschreier)\
**Post date:** [29. Mai 2020 um 07:27 UTC](https://forum.shopware.com/t/einkaufswelt-unter-kategorielisting/67301/2 "2020-05-29T07:27:25Z")

</div>

Hallo,

siehe beispielsweise hier: [https://forum.shopware.com/discussion/67319/einkaufswelt-unter-dem-listing-ausgeben-via-freitextfeld](https://forum.shopware.com/discussion/67319/einkaufswelt-unter-dem-listing-ausgeben-via-freitextfeld) (über die Forumssuche). Kurzum: an deiner Stelle stehen gar nicht die Einkaufswelten - Freitextfelder zur Verfügung, du müsstest sie dir also erst einmal verfügbar machen, beispielsweise über ein eigenes Smarty - Plugin oder ähnliches. Oder wie und wo hast du die Einkaufswelten - Freitextfelder im Listing auslesbar gemacht?

Grüße

Sebastian

---

<div class="post-metadata">

**Author:** ![ergobasis](https://avatars.discourse-cdn.com/v4/letter/e/439d5e/32.png) [@ergobasis](https://forum.shopware.com/u/ergobasis)\
**Post date:** [29. Mai 2020 um 08:14 UTC](https://forum.shopware.com/t/einkaufswelt-unter-kategorielisting/67301/3 "2020-05-29T08:14:31Z")

</div>

> [@sschreier schrieb:](https://forum.shopware.com/profile/18157/sschreier "sschreier")
> 
> Hallo,
> 
> siehe beispielsweise hier: [https://forum.shopware.com/discussion/67319/einkaufswelt-unter-dem-listing-ausgeben-via-freitextfeld](https://forum.shopware.com/discussion/67319/einkaufswelt-unter-dem-listing-ausgeben-via-freitextfeld) (über die Forumssuche). Kurzum: an deiner Stelle stehen gar nicht die Einkaufswelten - Freitextfelder zur Verfügung, du müsstest sie dir also erst einmal verfügbar machen, beispielsweise über ein eigenes Smarty - Plugin oder ähnliches. Oder wie und wo hast du die Einkaufswelten - Freitextfelder im Listing auslesbar gemacht?
> 
> Grüße
> 
> Sebastian

Ja wie ich es geschreiben habe, das hab ich schon erledigt und den Forum Eintrag habe ich gelesen und befolgt.&nbsp;

Allerdings funktioniert das leider so nicht bei mir und ich finde den Grund nicht.

&nbsp;

---

<div class="post-metadata">

**Author:** ![sschreier](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sschreier/32/23296_2.png) [@sschreier](https://forum.shopware.com/u/sschreier)\
**Post date:** [29. Mai 2020 um 08:31 UTC](https://forum.shopware.com/t/einkaufswelt-unter-kategorielisting/67301/4 "2020-05-29T08:31:42Z")

</div>

Hallo,

wie hast du denn die Einkaufswelten - Freitextfelder an dieser Stelle verfügbar gemacht? Ohne diese Information, ob dies nicht sogar der Fehler ist, kann dir auch keiner weiterhelfen. Kommt der Fehler denn auch, wenn du $emotion.attributes.under\_listing aus der Templatedatei wieder rausnimmst?

Nur durch den Aufruf “{$emotion.attributes.under\_listing}” machst du die Einkaufswelten - Freitextfelder ja nicht verfügbar sondern fragst nur einen Wert ab, der niemals ein Ergebnis liefern wird, da {$emotion.attributes} an dieser Stelle im Standard von Shopware überhaupt nicht verfügbar ist.

Bei deiner weißen Seite dürfte aber trotzdem auch ein Logeintrag erstellt werden, wo die entsprechende Fehlermeldung stehen dürfte.

Grüße

Sebastian

---

<div class="post-metadata">

**Author:** ![ergobasis](https://avatars.discourse-cdn.com/v4/letter/e/439d5e/32.png) [@ergobasis](https://forum.shopware.com/u/ergobasis)\
**Post date:** [29. Mai 2020 um 08:55 UTC](https://forum.shopware.com/t/einkaufswelt-unter-kategorielisting/67301/5 "2020-05-29T08:55:38Z")

</div>

> [@sschreier schrieb:](https://forum.shopware.com/profile/18157/sschreier "sschreier")
> 
> Hallo,
> 
> wie hast du denn die Einkaufswelten - Freitextfelder an dieser Stelle verfügbar gemacht? Ohne diese Information, ob dies nicht sogar der Fehler ist, kann dir auch keiner weiterhelfen. Kommt der Fehler denn auch, wenn du $emotion.attributes.under\_listing aus der Templatedatei wieder rausnimmst?
> 
> Nur durch den Aufruf „{$emotion.attributes.under\_listing}“ machst du die Einkaufswelten - Freitextfelder ja nicht verfügbar sondern fragst nur einen Wert ab, der niemals ein Ergebnis liefern wird, da {$emotion.attributes} an dieser Stelle im Standard von Shopware überhaupt nicht verfügbar ist.
> 
> Bei deiner weißen Seite dürfte aber trotzdem auch ein Logeintrag erstellt werden, wo die entsprechende Fehlermeldung stehen dürfte.
> 
> Grüße
> 
> Sebastian

so hier der Code vom Plugin&nbsp;

```
scheduleClearCache(ActivateContext::CACHE_LIST_DEFAULT);
    }
    public function deactivate(DeactivateContext $context)
    {
        $context->scheduleClearCache(DeactivateContext::CACHE_LIST_DEFAULT);
    }
    public static function getSubscribedEvents()
    {
        return [
            'Enlight_Controller_Action_PostDispatchSecure_Frontend_Listing' => 'onFrontendListing'
        ];
    }
    public function onFrontendListing(\Enlight_Event_EventArgs $args)
    {
        /** @var \Enlight_Controller_Action $controller */
        $controller = $args->get('subject');
        $view = $controller->View();

        $emotions = $view->getAssign('emotions');

        $service = $this->container->get('shopware_attribute.data_loader');

        $i = 0;
        foreach ($emotions as $emotion)
        {
            $attributes['attributes'] = $service->load('s_emotion_attributes', $emotion['id']);
            $emotions[$i] = $emotions[$i] + $attributes;
            $i++;
        }

        $view->assign('emotions', $emotions);
    }
}

```

&nbsp;

Die if-Abfrage hab ich jetzt noch nicht im einzelnen raus genommen, kann ich gleich mal probieren

&nbsp;

EDIT:

also ich hab die if-abfragen auskommentiert und komme zum gleichen Ergebnis wie vorher, weiße Seite. auch komplett raus löschen bringt das selbe Ergebnis.

---

<div class="post-metadata">

**Author:** ![ergobasis](https://avatars.discourse-cdn.com/v4/letter/e/439d5e/32.png) [@ergobasis](https://forum.shopware.com/u/ergobasis)\
**Post date:** [29. Mai 2020 um 09:55 UTC](https://forum.shopware.com/t/einkaufswelt-unter-kategorielisting/67301/6 "2020-05-29T09:55:15Z")

</div>

OMG okay hab es hin bekommen! ein Kollege hat den fehler gefunden… hatte einen Block Namen Doppelt drinne xD

hab noch etwas getüftelt und jetzt funktioniert es mit dem Code (falls jemand das auch mal machen möchte)

```
{extends file='parent:frontend/listing/listing.tpl'}

{block name="frontend_listing_list_promotion"}
	{if $hasEmotion}
        {$fullscreen = false}

        {block name="frontend_listing_emotions"}
            

                {foreach $emotions as $emotion}
                    {if $emotion.attributes.under_listing == 0 || empty($emotion.attributes.under_listing) || $emotion.attributes.under_listing == ""}
						{if $emotion.fullscreen == 1}
							{$fullscreen = true}
						{/if}
						
						
						
					{/if}
                {/foreach}

                {block name="frontend_listing_list_promotion_link_show_listing"}

                    {$showListingCls = "emotion--show-listing"}

                    {foreach $showListingDevices as $device}
                        {$showListingCls = "{$showListingCls} hidden--{$emotionViewports[$device]}"}
                    {/foreach}

                    {if $showListingButton}
                        
                            
                                {s name="ListingActionsOffersLink"}Weitere Artikel in dieser Kategorie »{/s}
                            
                        
                    {/if}
                {/block}
            
        {/block}
    {/if}
{/block}

{block name="frontend_listing_listing_wrapper" append}
{* Emotion worlds under Listing *}
{block name="frontend_listing_list_promotion_unten"}
	{if $hasEmotion}
        {$fullscreen = false}

        {block name="frontend_listing_emotions_unten"}
            

                {foreach $emotions as $emotion}
                    {if $emotion.attributes.under_listing == 1}
						{if $emotion.fullscreen == 1}
							{$fullscreen = true}
						{/if}
						
						
						
					{/if}
                {/foreach}

                {block name="frontend_listing_list_promotion_link_show_listing_unten"}

                    {$showListingCls = "emotion--show-listing"}

                    {foreach $showListingDevices as $device}
                        {$showListingCls = "{$showListingCls} hidden--{$emotionViewports[$device]}"}
                    {/foreach}

                    {if $showListingButton}
                        
                            
                                {s name="ListingActionsOffersLink"}Weitere Artikel in dieser Kategorie »{/s}
                            
                        
                    {/if}
                {/block}
            
        {/block}
    {/if}
{/block}
{/block}

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![sschreier](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sschreier/32/23296_2.png) [@sschreier](https://forum.shopware.com/u/sschreier)\
**Post date:** [29. Mai 2020 um 10:38 UTC](https://forum.shopware.com/t/einkaufswelt-unter-kategorielisting/67301/7 "2020-05-29T10:38:24Z")

</div>

Hallo,

als Hinweis, wenn den Code wirklich mal jemand verwenden möchte: append und prepend darf bzw. soll man schon seit Jahren nicht mehr nehmen / verwenden&nbsp;sondern stattdessen {$smarty.block.parent} (da oben append verwendet wird)&nbsp;.

Grüße

Sebastian

---

<div class="post-metadata">

**Author:** ![ergobasis](https://avatars.discourse-cdn.com/v4/letter/e/439d5e/32.png) [@ergobasis](https://forum.shopware.com/u/ergobasis)\
**Post date:** [29. Mai 2020 um 10:39 UTC](https://forum.shopware.com/t/einkaufswelt-unter-kategorielisting/67301/8 "2020-05-29T10:39:39Z")

</div>

> [@sschreier schrieb:](https://forum.shopware.com/profile/18157/sschreier "sschreier")
> 
> Hallo,
> 
> als Hinweis, wenn den Code wirklich mal jemand verwenden möchte: append ubd prepend darf bzw. soll man schon seit Jahren nicht mehr nehmen sondern stattdessen {$smarty.block.parent} .
> 
> Grüße
> 
> Sebastian

ja das habe ich auch probiert und das hat nicht funktioniert. vll krigt es ja jemand damit hin, würde mich interessieren.&nbsp;

---

<div class="post-metadata">

**Author:** ![sschreier](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sschreier/32/23296_2.png) [@sschreier](https://forum.shopware.com/u/sschreier)\
**Post date:** [29. Mai 2020 um 10:44 UTC](https://forum.shopware.com/t/einkaufswelt-unter-kategorielisting/67301/9 "2020-05-29T10:44:18Z")

</div>

Hallo,

mit {$smarty.block.parent} funktioniert es zu 100%. Dein Code sollte so wie erwähnt nicht (mehr) verwendet werden, ist also ein schlechtes Beispiel.

Im Prinzip entfernt man einfach den Begriff append und setzt gleich am Anfang&nbsp;des Blocks {$smarty.block.parent} - fertig. Das funktioniert so 100%ig.

Grüße

Sebastian
