Einkaufswelt unter dem Listing ausgeben via Freitextfeld

Hi zusammen,

ich möchte die Einkaufswelten optional überhalb und unterhalb des Kategorielistings ausgeben. Dafür habe ich unter „s_emotion_attributes“ ein Checkbox-Freitextfeld „showbelowlisting“ angelegt. Hier noch das angepasste Template-File:

{extends file="parent:frontend/listing/listing.tpl"}
{* Emotion worlds *}
{block name="frontend_listing_list_promotion"}
    {if $hasEmotion}
        {$fullscreen = false}

        {block name="frontend_listing_emotions"}
            

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

                    {block name="frontend_listing_emotions_emotion"}
						{if !$emotion.attribute.showbelowlisting}
                        	{include file="frontend/_includes/emotion.tpl"}
						{/if}
                    {/block}
                {/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 below listing*}
{block name="frontend_listing_list_promotion_below"}
    {if $hasEmotion}
        {$fullscreen = false}

        {block name="frontend_listing_emotions_below"}
            

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

                    {block name="frontend_listing_emotions_emotion_below"}
						{if $emotion.attribute.showbelowlisting}
							{include file="frontend/_includes/emotion.tpl"}
						{/if}
                    {/block}
                {/foreach}
            
        {/block}
    {/if}
{/block}

Habe den Original-Block „frontend_listing_emotions_emotion“ geändert und unterhalb des Listings noch den Block „frontend_listing_emotions_emotion_below“ angefügt. Damit ändert sich im Frontend aber leider nichts. Habe ich im obigen Code was falsche gemacht? Oder ist mein Ansatz von vornherein falsch?

Vielen Dank für jegliche Antworten!

Hallo,

sind denn im Array {$emotion} überhaupt die attribute mit dabei (kannst du ja mit var_dump prüfen)? Ich würde sagen nein, und das wird dein Problem sein. Die müsstest du dir also erst einmal verfügbar machen, damit du deine Funktionalität realisieren kannst.

Grüße

Sebastian

1 Like

Hast recht, auf die Attribute hat man aus der listing.tpl keinen Zugriff. Habe es jetzt anders gelöst, indem ich an den Listing-Block noch mal die Einkaufswelten-Blöcke angehängt habe. Die erste foreach vor der Produktliste stoppt nach der ersten Iteration und die foreach nach den Produkten zeigt alle Einkaufswelten an, die nach der ersten kommen (index > 0).

Ob das die eleganteste und performanteste Lösung ist, weiß ich nicht. Vielleicht hat ja jemand noch andere Ansätze. Danke jedenfalls für den Hint.

Hallo,

naja ein eleganterer, performanterer und besserer Ansatz wäre es, dir die emotion - Attributes beispielsweise über ein Smarty - Plugin zu holen und dann einfach anhand des Wertes im Einkaufswelten - Freitextfeld die Einkaufswelt oben oder unten anzeigen zu lassen.

Grüße

Sebastian

Bin leider nicht so fit in dem Thema. Wie kann ich mich da reinarbeiten? Oder würde das den Rahmen dieses Threads sprengen?