Accueil > > > GÉNÉRATEUR DE MENU MULTILANGUE AVEC CONTROLE DU NIVEAU D'ACCÉS À PARTIR DE PLAN DE SITE XML
GÉNÉRATEUR DE MENU MULTILANGUE AVEC CONTROLE DU NIVEAU D'ACCÉS À PARTIR DE PLAN DE SITE XML
Information sur la source
Description
Cette classe permet à partir d'un plan de site en xml de generer automatiquement un menu en fonction de la langue et du niveau d'authentification.
Source
- <?php
- class menu
- {
- private $_xml_source;
- private $_language;
- private $_access_level;
- //permet d'afficher le noeud de depart(accueil)
- var $_show_starting_node;
- //constructeur
- function menu($set_xml_source,$set_access_level,$set_language)
- {
- $this->_xml_source=$set_xml_source;
- $this->_access_level=$set_access_level;
- $this->_language=$set_language;
- }
- //fonction recursive pour parcourir toutes les branches du xml
- private function check_node($node)
- {
- echo('<ul>');
- foreach($node->sitenode as $sitenode)
- {
- if($this->is_in(explode(',',$sitenode['level']),$this->_access_level)==true)
- {
- echo('<li><a href=\'');
- echo($sitenode['url']);
- echo('\' ');
- if(!empty($sitenode['id'])){echo('id=\''.$sitenode['id'].'\' ');}
- if(!empty($sitenode['class'])){echo('class=\''.$sitenode['class'].'\' ');}
- echo('>');
- echo($sitenode[$this->_language]);
- echo('</a>');
- if(!empty($sitenode->sitenode))
- {
- $this->check_node($sitenode);
- }
- echo('</li>');
- }
- }
- echo('</ul>');
- }
- public function display()
- {
- $xml=simplexml_load_file($this->_xml_source);
- if ($this->_show_starting_node==true)
- {
- $this->check_node($xml);
- }
- else
- {
- $this->check_node($xml->sitenode);
- }
- }
- private function is_in($tab,$value)
- {
- $return_value=false;
- foreach($tab as $tab_value)
- {
- if($tab_value==$value)
- {
- $return_value=true;
- }
- }
- return $return_value;
- }
- }
- ?>
-
-
- XML exemple :
-
- <?xml version="1.0" encoding="utf-8"?>
- <sitemap>
- <sitenode url='index.php' fr='Accueil' en='Index' level='0,1,2,3,4,5' >
- <sitenode url='page2.php' fr='Pagefr1' en='Pageen1' level='0,1,2,3,4,5' id='mnu_page2'>
- <sitenode url='page3.php' fr='Pagefr2' en='Pageen2' level='0,1,2,3,4' class='level2' />
- <sitenode url='page4.php' fr='Pagefr3' en='Pageen3' level='0,1,2,3,4' />
- </sitenode>
- .....
- </sitenode>
- </sitemap>
<?php
class menu
{
private $_xml_source;
private $_language;
private $_access_level;
//permet d'afficher le noeud de depart(accueil)
var $_show_starting_node;
//constructeur
function menu($set_xml_source,$set_access_level,$set_language)
{
$this->_xml_source=$set_xml_source;
$this->_access_level=$set_access_level;
$this->_language=$set_language;
}
//fonction recursive pour parcourir toutes les branches du xml
private function check_node($node)
{
echo('<ul>');
foreach($node->sitenode as $sitenode)
{
if($this->is_in(explode(',',$sitenode['level']),$this->_access_level)==true)
{
echo('<li><a href=\'');
echo($sitenode['url']);
echo('\' ');
if(!empty($sitenode['id'])){echo('id=\''.$sitenode['id'].'\' ');}
if(!empty($sitenode['class'])){echo('class=\''.$sitenode['class'].'\' ');}
echo('>');
echo($sitenode[$this->_language]);
echo('</a>');
if(!empty($sitenode->sitenode))
{
$this->check_node($sitenode);
}
echo('</li>');
}
}
echo('</ul>');
}
public function display()
{
$xml=simplexml_load_file($this->_xml_source);
if ($this->_show_starting_node==true)
{
$this->check_node($xml);
}
else
{
$this->check_node($xml->sitenode);
}
}
private function is_in($tab,$value)
{
$return_value=false;
foreach($tab as $tab_value)
{
if($tab_value==$value)
{
$return_value=true;
}
}
return $return_value;
}
}
?>
XML exemple :
<?xml version="1.0" encoding="utf-8"?>
<sitemap>
<sitenode url='index.php' fr='Accueil' en='Index' level='0,1,2,3,4,5' >
<sitenode url='page2.php' fr='Pagefr1' en='Pageen1' level='0,1,2,3,4,5' id='mnu_page2'>
<sitenode url='page3.php' fr='Pagefr2' en='Pageen2' level='0,1,2,3,4' class='level2' />
<sitenode url='page4.php' fr='Pagefr3' en='Pageen3' level='0,1,2,3,4' />
</sitenode>
.....
</sitenode>
</sitemap>
Conclusion
pour créer le menu :
$menu=new menu('sitemap.xml',$level,$langue); //affiche le premier noeud(index) $menu->_show_starting_node=true; $men u->display();
(on peut passer des classes css et des id dans les attributs du xml)
Historique
- 09 mars 2007 11:11:49 :
- un peu d'orthographe
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
Lecture XML via simplexml_load_file() génère une erreur "Input is not proper UTF-8, indicate encoding !" [ par karpediem ]
Bonjour @ toutezéatous,J'ai un petit pb lorsque j'essaie de lire un fichier XML qui m'est transmis par un prestataire. C'est ma première expérience de
Pb avec SEO [ par Al3x_Oo ]
Bonjour, J'ai un problème avec SEO sur mon forum. J'ai installé GYM SITEMAPS pour pouvoir créer un sitemap pour les moteurs de recherches mais ça n
SimpleXML [ par fabienfs ]
Bonsoir, Je débute avec SimpleXML et j'ai du mal à lire la syntaxe de mon XML. Voici mon XML : [code=xml] PLAYLIST <item ui
Erreur xml [ par ouzb ]
Bonjour a tous les developpeurs: J'envoi des données d'une chaine xml sur mon serveur.Mais j'ai ces fenres d'erreurs : [color=red]Warning: simplexml_
Php extraction de donnée [ par isiselo ]
Bonjour, Voilà je vous explique mon problème J'ai un outil sur lequel sont stockés des données xml,je dois récupérer automatiquement ses données XML
remplir un combobox en php et Dom à partir d'un fichier xml [ par leilameherzi ]
Bonsoir à tous, je suis entrain de gérer un fichier XML avec PHP5 en utilisant DOM. Pour la manipulation des éléments du fichier XML, j'ai besoin de
Web service + Soap + XML [ par j3r3m067 ]
Bjr à tous, Voilà je dois développer un web service avec le protocole SOAP. Mon web service doit: [list] * Envoyer un fichier XML présent sur un répe
Open Document XML : Accéder à un attribut d'un element [ par jmb44 ]
Bonjour, J'ai un petit soucis concernant l'accès à un attribut d'un document XML (format opendocument) : je voulais utiliser simpleXML mais je n'ai r
je cherche bon plan pour aprendre vite le php ou au moin pouvoir tester mes scripte :) [ par sliper69 ]
[b]hello je commence à apprendre le php c'est vachement compliquer [^^happy3] et je cherche un site ou ils expliquent tout depuis le stricte début [^^
Envoi et reception de fichier XML sur un serveur [ par j3r3m067 ]
Bonjour à tous, je dois envoyer un fichier XML sur un serveur distant en HTTP/POST, en focntion de la réponse du serveur je dois répondre un autre fi
|
Derniers Blogs
[WP7] DYNAMICALLY CHANGE STARTUP PAGE[WP7] DYNAMICALLY CHANGE STARTUP PAGE par KooKiz
Let's say that you want to allow the user to customize the startup page of your application. You can easily change the startup page by editing the 'NavigationPage' attribute in the manifest file. But the manifest cannot be modified once the applicatio...
Cliquez pour lire la suite de l'article par KooKiz SESSION SILVERLIGHT 5 3D : SLIDES ET DEMOSSESSION SILVERLIGHT 5 3D : SLIDES ET DEMOS par Groc
Durant les techdays, j'ai eu le plaisir d'animer une session sur Silverlight 5 et la 3D avec Simon Ferquel. Comme promis, voici nos slides et mes démos (celles avec le viper BSG) ici et là. Pour mémoire, les démos utilisent toutes le viper BSG...
Cliquez pour lire la suite de l'article par Groc [TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES[TECHDAYS 2012] SESSION WEBMATRIX 2 : LE COUTEAU SUISSE GRATUIT POUR VOS DéVELOPPEMENTS WEB - SLIDES par gpommier
Suite à la session que j'ai présenté sur WebMatrix 2, vous pouvez trouver les slides ici, ainsi que les démos en packages nuget : démos1 et démos2 J'en profite pour remercier chaleureusement tous ceux qui sont venus très nombreux à cette sess...
Cliquez pour lire la suite de l'article par gpommier [SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Forum
RE : SONDAGE..RE : SONDAGE.. par phpAnonyme
Cliquez pour lire la suite par phpAnonyme RE : SONDAGE..RE : SONDAGE.. par TychoBrahe
Cliquez pour lire la suite par TychoBrahe
Logiciels
Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning
|