GÉNÉRATEUR DE MENU MULTILANGUE AVEC CONTROLE DU NIVEAU D'ACCÉS À PARTIR DE PLAN

lilippx Messages postés 149 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 15 septembre 2007 - 9 mars 2007 à 15:22
lilippx Messages postés 149 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 15 septembre 2007 - 13 mars 2007 à 08:52
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/41798-generateur-de-menu-multilangue-avec-controle-du-niveau-d-acces-a-partir-de-plan-de-site-xml

lilippx Messages postés 149 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 15 septembre 2007
13 mars 2007 à 08:52
salut,
je me disais bien que ca devait deja exister...
j'aurrais du chercher.
merci
cs_garfield90 Messages postés 388 Date d'inscription lundi 7 juillet 2003 Statut Webmaster Dernière intervention 10 février 2009
12 mars 2007 à 20:49
ta function is_in peut etre remplacer : regardes in_array => http://fr.php.net/in_array
lilippx Messages postés 149 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 15 septembre 2007
10 mars 2007 à 09:31
salut, merci pour ce petit conseil.
Sinon, pour la structure du xml, y'a un exemple en bas de la source.
pour que ce soit plus propre, j'aurrais pu faire :
<sitenode id='....' class='....'>
<language id='fr' url='....' value=''/>
<language id='en' url='....' value=''/>
<sitenode>
<language id='fr' url='....' value='.....'/>
<language id='en' url='....' value='......'/>
</sitenode>
</sitenode>

ca permettrai de passer la langue par $_GET plus facilement.
voilà bonne journée
cs_jean84 Messages postés 449 Date d'inscription jeudi 26 août 2004 Statut Membre Dernière intervention 5 mars 2009
10 mars 2007 à 01:34
Avec DOM tout simplement ? Non je plaisante (quoi que ...) ^^
Je vois pas trop quoi dire sur ta classe, je ne connais pas du tout simpleXML, je suis un adepte de DOM.
Un petit truc quand meme : dans ta boucle foreach dans la fonction menu::check_node(), evite d'utiliser a repetition echo.
Dans un cas extreme, tu pourrais utiliser ob_start() & ob_flush() avant et apres pour eviter de solliciter autant de fois le navigateur. A chaque tour de boucle, tu executes une dizaines de fois cette fonction ce qui a pour effet d'envoyer une dizaine de fois au navigateur du texte.
Essaye de buffeurise (je sais pas trop si sa se dit :p) toute ta boucle avant de l'envoyer, tu y gagneras en perf.

private function check_node($node)
{
$Buffer = '';
foreach($node->sitenode as $sitenode)
{
if($this->is_in(explode(',',$sitenode['level']),$this->_access_level)==true)
{
$Buffer . = '<li>';
$Buffer .= $sitenode[$this->_language];
$Buffer .= '';

if(!empty($sitenode->sitenode))
{
$this->check_node($sitenode);
}
$Buffer .= '</li>';
}
}
return $Buffer.'':
}

Sa sera plus rapide ! Et sinon, quelle doit etre la srtucture de ton document XML ?

@++
lilippx Messages postés 149 Date d'inscription samedi 19 mars 2005 Statut Membre Dernière intervention 15 septembre 2007
9 mars 2007 à 15:22
Petite contrainte, simpleXML n'accepte que de l'utf-8 en entrée et génère du utf-8 en sortie.
Si vous voulez espérer du iso-8859-1 en sortie, modifier la ligne 30 pour :
echo(utf8_decode($sitenode[$this->_language]));

à quand un monde sans utf-8?.....
Rejoignez-nous