Jump to content

test d'une variable array dans un tpl


Recommended Posts

bonjour,

dans le header.tpl je cherche à afficher des infos dans le title de la page en fonction de la catégorie ou je me trouve.
Je vais essayer d'être clair...

j'ai les infos suivantes :

Je cherche à faire un test sur la valeur de la variable $categories qui est de type array(4).
Le pb c'est qu'il n'y a aucun identifiant pour ces valeurs. Je cherche à savoir si je suis en $categories.0, $categories.1, $categories.2 ou $categories.3 pour afficher $categories.0.name ou $categories.1.name etc...

L'idéal serait d'afficher directement $categories.X.name mais comment remplacer ce X par la valeur lue dans le array ?

Pour l'instant je fais donc un truc du genre :

{if $categories.0}{$categories.0.name|escape:'htmlall':'UTF-8'}{else}{$categories.1.name|escape:'htmlall':'UTF-8'}{/if}



ceci ne fonctionne pas, il m'affiche toujours $categories.1.name

pour info les variables smarty sont définies comme suit :

{$categories}    Array (4)
 0 => Array (3)
   id_category => "2"
   name => "nom1"
   link_rewrite => "lien1"
 1 => Array (3)
   id_category => "11"
   name => "nom2"
   link_rewrite => "lien2"
 2 => Array (3)
   id_category => "13"
   name => "nom3"
   link_rewrite => "lien3"
 3 => Array (3)
   id_category => "145"
   name => "nom4"
   link_rewrite => "lien4"


Merci

Link to comment
Share on other sites

En fait imaginons la structure suivante :

Accueil
---- Catégorie A
---------sous cat A1
---------sous cat A2
---------sous cat A3
---- Catégorie B
---------sous cat B1
--------------sous sous cat B11
--------------sous sous cat B12
---------sous cat B2
---------sous cat B3
---- Catégorie C
---------sous cat C1
---------sous cat C2
---------sous cat C3

En fait si quelqu'un peut me dire comment traduire en smarty :

1) "afficher le nom de la catégorie actuelle"
autrement dit si on est en B2 afficher le nom de la cat B2
si on est sur un produit de A1 afficher le nom de la cat A1

2) "afficher le nom de la catégorie de niveau 0
autrement dit si on est en A2 afficher le nom de la cat A
si on est en C3 afficher le nom de la cat C
si on est en B11 afficher le nom de la cat B

Link to comment
Share on other sites

{if $categories.0}{$categories.0.name|escape:'htmlall':'UTF-8'}{else}{$categories.1.name|escape:'htmlall':'UTF-8'}{/if}


Tente plutôt quelque chose comme ça (pas testé, je te note ça comme ça) :

{if $categories.id_category == 0}
{$categories.name|escape:'htmlall':'UTF-8'}
{else}
...{/if}

Link to comment
Share on other sites

Merci pour la réponse mais ça ne fonctionne pas. J'avais essayé un truc comme ça aussi. Mais comme dis plus haut dans mon post, en fait $categories est un tableau (array) de 4 données (0,1,2,3) et pour chacune de ces données on a un id, un nom, un lien... etc

le pb c'est que ces données 0,1,2 et 3 n'ont pas de nom c'est pour cela que j'essaie de teste $categories.0

En même temps je me demande si c'est bien la bonne méthode...

Link to comment
Share on other sites

Tu fais peut-être fausse route...
Tu veux afficher le nom d'une catégorie si j'ai bien compris.
Tu as la variable categories, sous forme de tableau (array) qui reprend toutes les catégories. Mais il doit y avoir une variable category qui prend la catégorie en cours. Pour afficher le nom, category.name ou à l'occasion category.link_rewrite , ca devrait faire l'affaire et ce sera plus simple.

Link to comment
Share on other sites

hum... il faudrait remonter l'arborescence à l'envers, ca pourrait être faisable en smarty mais les temps de calcul risquent d'être long ; mieux vaut une nouvelle fonction php qui gère ça ou ... l'idée de quelqu'un d'autre... bonne chance.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...