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

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

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}