Skip to content

Créer un menu recursive et l’afficher en utilisant Smarty

9 août, 2011

Hi all,

Après plusieurs années dont je suis resté fidèle à phpLib (old school :-D ) j’ai finalement décidé de changer de moteur de template.

Mon choix était Smarty (finalement c’est le meilleur non? :) )

Je ne vais pas faire un tutoriel concernant l’utilisation de Smarty vu qu’il y en a plein comme par exemple:  Initiation aux templates en PHP avec Smarty ou encore Un moteur de template : Smarty sans oublier bien sur la documentation officielle de Smarty [en].

Bref, je vais parler d’une petite partie qui m’a posé un léger problème lors du développement d’un site (c’est normale, c’est ma toute première utilisation de Smarty :) ), cette partie concerne l’affichage d’un menu récursive dynamique en utilisant Smarty.

Malheureusement, je n’ai pas pu trouver l’information concernant ce problème ou alors elle était compliqué, mai finalement j’ai pu corriger le problème et afficher le menu correctement :)

Voici comment j’ai procédé:

D’abord la fonction pour créer un menu organisé contenant les catégories et sous catégories:


function afficher_menu($parent, $niveau, $array) {
	$html = "";
	$niveau_precedent = 0;
	if (!$niveau && !$niveau_precedent) $html .= "\n

Ensuite je récupère mes catégories depuis la base de données et je crée mon array (tableau) qui sera traité par la fonction ci-dessus:


$query = $connexion->prepare("
			SELECT id_cat,Parent,nom_cat FROM ouss_cat
			WHERE act=1
			ORDER BY ord
							");
$query->execute();
$categories = array();
while($data = $query->fetch()) {
	$categories[] = array(
	'Parent' => $data['Parent'],
	'id_cat' => $data['id_cat'],
	'nom_cat' => $data['nom_cat']
	);
}
$test = afficher_menu(0,0,$categories);

Et finalement, je crée mon variable Smarty:


$tpl->assign('menu',$test);

Ce qui donne finalement:

mon_fichier.php


require("libs/smarty.class.php");
$tpl = new Smarty();
function afficher_menu($parent, $niveau, $array) {
	$html = "";
	$niveau_precedent = 0;
	if (!$niveau && !$niveau_precedent) $html .= "\n

mon_fichier.tpl


{$menu}

A vous de voir pour la personnalisation du menu à l’aide de votre fichier CSS
et voilà, mon menu est bel et bien affiché :)

Enjoy :)

Articles similaires:

  1. Menu vertical pure CSS (Personnalisable même par des débutants ;-) )
  2. PHP – script Newsletter depuis fichier contact .csv hotmail / live mail
  3. Pour php j’utilise les apostrophes ou les guillemets?

A propos de l'auteur

Jeune développeur web et expert en SEO. Actuellement à la tête de l'agence de développement des sites Internet Galerie César.

Commentaires

  1. hooper février 20, 2012

    Twig est un moteur de template très intéressant aussi. D’ailleurs je l’utilise.
    Je vais voir ce qu’il a dans le ventre Smarty.

Trackbacks

Aucun trackback pour cet article.

Ajouter un commentaire

Required

Required

Optionnel

A propos de ce blog

Blog Galerie César est un blog qui parle de tous ce qui tourne autour du développement web et ses différentes technique comme le XHTML, CSS, PHP, JQuery...
Le blog parle également des techniques de référencement et d'optimisation des sites pour les moteur de recherches (SEO) et dans quelques parties on parle aussi de la sécurité informatique et la sécurité des sites web.
Pour me contacter: contact (me at) galerie-cesar.com.

Recent Comments

@GalerieCesar

  • No public Twitter messages.

Astuce

Pour monétiser son blog, vendre des liens de texte est un bon moyen si on ne veut pas mettre trop de banniéres sur le blog. Mais, on devrait toujours faire attention que les pages référencées soient pertinentes.s

Si vous souhaitez vous orienter vers les métiers de l'informatique, n'hésitez pas à consulter JobiJoba qui regroupe toutes les offres d'emploi du secteur, vous pouvez chercher par techno : jQuery, Php, Java... Selon vos recherches d'emploi en informatique, vous obtenez des suggestions de postes.

Liens

Switch to our mobile site