Smarty Variable ausgeben

Hey Leute,

 

in meiner Debug ausgabe von Smarty steht folgendes:

 

$sCategories	Smarty_Variable Object (3)
->value = Array (8)
  44 => Array (22)
    id => 44
    name => "AlleStartFilter"
    metaKeywords => null
    metaDescription => ""
    cmsHeadline => ""
    cmsText => ""
    active => true
    template => null
    blog => false
    path => "|3|"
    external => ""
    externalTarget => ""
    hideFilter => false
    hideTop => true
    hidetop => true
    attribute => Array (0)
    media => Array (0)
    description => "AlleStartFilter"
    link => "shopware.php?sViewport=cat&sCategory=44"
    flag => false
    subcategories => Array (0)
    childrenCount => 0

 

 

 

Wie kann ich hier den Inhalt der Variable ID ausgeben?

 

Mit {$sCategories.id} kommt nichts.

 

Danke für Hinweise.

 

mfg

timsen

 

Wie du anhand der Ausgabe erkennen kannst:

$sCategories ist ein Array mit 8 Elementen (Array (8)). Jedes dieser 8 Elemente enhält die Attribute, die du oben schilderst. Daher kannst du nicht direkt auf $sCategories.id zugreifen. Du musst zunächst eines der 8 Elemente angeben. Das erste erreichst du mit dem Schlüssel 44: Das heißt du kannst auf $sCategories[44].id zugreifen.

Du kannst eine Schleife (z.B. foreach) nutzen, um über die Elemente zu iterieren.

Viele Grüße

1 Like

Hey simkli,

 

danke schonmal für die Antwort. Und was mache ich wenn die Anzahl in dem Array sich auch verändern kann? Hintergrund: ICh möchte die “%” Badges in der Listenansicht nur in der Kategorie mit der ID 42 ausgeben.

Mein Block sieht grade so aus:

 

 {* Discount badge *}
        {block name='frontend_listing_box_article_discount'}
            {if $sArticle.has_pseudoprice && $sCategoryContent.37.id == "42"}
               {$smarty.block.parent}
            {/if}
        {/block}

 

Aber mien "&& $sCategoryContent.37.id == “42"” funktioniert irgendwie nicht.

 

Ja die Variable $sCategories ist nicht so gut geeignet, da es alle Hauptkategorien enthält. Der Aufbau der Variable $sCategoryContent sieht dagegen anders aus. Hier hast du keine Liste von Elementen sondern kannst eben mit $sCategoryContent.id direkt darauf zugreifen.

Nicht gleich von dem einem auf das andere schließen

Viele Grüße

1 Like

Oha da war ich wohl zu voreilig :wink:

 

So klappt es ja. Das gucke ich mir dann wohl nochmal genauer an mit dem Array-Aufbau.

 

Danke!

 

  {* Discount badge *}
        {block name='frontend_listing_box_article_discount'}
            {if $sArticle.has_pseudoprice && $sCategoryContent.id == 42} {*nur in Kategorie ANgebote ausgeben*}
               {$smarty.block.parent}
            {/if}
        {/block}