Artikelauflistung bei 0 Artikel ausblenden?

Guten Morgen,

wir möchten, wenn kein Artikel in der Kategorie vorhanden ist, die Artikelauflistung samt „Sortierung, Artikel pro Seite“ ausblenden.

Jemand eine Idee, wie wir das umsetzen können?

Bild Beispiel: https://picload.org/thumbnail/dgarilpa/screenshot.jpg

Guten Morgen,

fügen Sie mal bitte dies in die Javascript Konsole ihres Browsers sein, wenn Sie im Listing sind und sagen Sie mir , ob das, was sich dann in diesem roten Rahmen befindet, genau das ist, was Sie alles entfernt haben möchten : 

$(„body.is–ctl-listing .listing–wrapper“).css(„border“,„10px solid red“);

Mit F12 öffnen sie die Entwicklertools und im Reiter Console fügen sie den Code ein.

 

Jemand eine Idee, wie wir das umsetzen können?

Im Template gibt es eine Variable, welche die einzelnen Artikel im Frontend ausgibt. Bei dieser einfach innerhalb einer IF Abfrage den Count Befehl verwenden und wenn das Ergebnis 0 ist, dann das nachfolgende nicht anzeigen, ansonsten schon.

Vielen Dank für die schnelle Antwort. Ja, ist genau der Bereich.

1 Like

@Brombeere schrieb:

Vielen Dank für die schnelle Antwort. Ja, ist genau der Bereich.

 

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

{block name="frontend_listing_listing_wrapper"}
    {if $showListing && !empty($sArticles)}

        {$listingCssClass = "listing--wrapper"}

        {foreach $showListingDevices as $device}
            {$listingCssClass = "{$listingCssClass} visible--{$emotionViewports[$device]}"}
        {/foreach}

        {if $theme.sidebarFilter}
            {$listingCssClass = "{$listingCssClass} has--sidebar-filter"}
        {/if}

        

            {* Sorting and changing layout *}
            {block name="frontend_listing_top_actions"}
                {include file='frontend/listing/listing_actions.tpl'}
            {/block}

            {block name="frontend_listing_listing_container"}
                

                    {block name="frontend_listing_no_filter_result"}
                        
                            {include file="frontend/_includes/messages.tpl" type="info" content="{s name=noFilterResult}Für die Filterung wurden keine Ergebnisse gefunden!{/s}" visible=false}
                        
                    {/block}

                    {block name="frontend_listing_listing_content"}
                        

                            {* Actual listing *}
                            {block name="frontend_listing_list_inline"}
                                {foreach $sArticles as $sArticle}
                                    {include file="frontend/listing/box_article.tpl"}
                                {/foreach}
                            {/block}
                        
                    {/block}
                
            {/block}

            {* Paging *}
            {block name="frontend_listing_bottom_paging"}
                
                    {include file="frontend/listing/actions/action-pagination.tpl"}
                
            {/block}
        
    {/if}
{/block}

In die Datei listing.tpl bennen und in den Ordner themes\Frontend\DEINTHEME\frontend\listing\listing.tpl packen.

{if $showListing} wurde nur zu {if $showListing && !empty($sArticles)} geändert.

MfG,

Lorenz1994

1 Like

Vielen Dank! Funktioniert!

*Uff* bei der Lösung bekommt man ja Magenschmerzen, auch wenn sie funktioniert. Hier wird ja ein ganzer Block mit Unterblöcken überschrieben. Das ist alles andere als updatesicher. Ich würde wohl eher index/index.tpl den Block {block name=“frontend_index_body_classes”} mit einer eigenen Class erweitern, wenn sArticles leer ist, und mit dieser die Class listing–wrapper auf display:none überschreiben - jetzt so schnell aus der Hüfte geschossen.

1 Like

@Brombeere schrieb:

Vielen Dank! Funktioniert!

@sonic schrieb:

*Uff* bei der Lösung bekommt man ja Magenschmerzen, auch wenn sie funktioniert. Hier wird ja ein ganzer Block mit Unterblöcken überschrieben. Das ist alles andere als updatesicher. Ich würde wohl eher index/index.tpl den Block {block name=“frontend_index_body_classes”} mit einer eigenen Class erweitern, wenn sArticles leer ist, und mit dieser die Class listing–wrapper auf display:none überschreiben - jetzt so schnell aus der Hüfte geschossen.

Hier noch die etwas saubere und updatesichere Variante : 

Smarty : 

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

{block name="frontend_index_body_classes" append}
   {if {controllerName|lower} == "listing" && empty($sArticles)}
		articles-empty
   {/if}
{/block}

 CSS :

.articles-empty .listing--wrapper {
		display: none!important;
}

 

1 Like

Danke, habe es entsprechend neu umgesetzt.

Ich habe es nun genauso umgesetzt wie beschrieben. Allerdings habe ich nun Unterkategorien die nicht diese Klasse bekommen. Die Hauptkategorien bekommen die Klasse zugewiesen allerdings nicht die Unterkategorien.

Zusätzlich als Info in der Unterkategorie befindet sich eine Einkaufswelt welche folgendes Häkchen beinhaltet.

Wird empty($sArticles) nur bei leeren Hauptkategorien als Variable verwendet?

Weiß hier jemand wo der Fehler liegt? ist es mein Gedankenfehler

Ich habe volgenden Code verwendet:

 

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

 {block name="frontend\_index\_body\_classes" append} {if {controllerName|lower} == "listing" && !empty($sArticles)} articles-empty {/if} {/block}

 

Ich habe mir nun mächtig den Kopf zerbrochen und nach Lösungen gesucht dabei hätte es so einfach sein können ^^

Hier die Lösung für jemanden der Sie noch sucht bzw das gleiche “Problem” hatte wie ich.

 {if $sArticles} {else} articles-empty {/if}