GÉNÉRATEUR DE MENU MULTILANGUE AVEC CONTROLE DU NIVEAU D'ACCÉS À PARTIR DE PLAN
lilippx
Messages postés149Date d'inscriptionsamedi 19 mars 2005StatutMembreDernière intervention15 septembre 2007
-
9 mars 2007 à 15:22
lilippx
Messages postés149Date d'inscriptionsamedi 19 mars 2005StatutMembreDernière intervention15 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.
lilippx
Messages postés149Date d'inscriptionsamedi 19 mars 2005StatutMembreDernière intervention15 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és449Date d'inscriptionjeudi 26 août 2004StatutMembreDerniè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.
Sa sera plus rapide ! Et sinon, quelle doit etre la srtucture de ton document XML ?
@++
lilippx
Messages postés149Date d'inscriptionsamedi 19 mars 2005StatutMembreDernière intervention15 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]));
13 mars 2007 à 08:52
je me disais bien que ca devait deja exister...
j'aurrais du chercher.
merci
12 mars 2007 à 20:49
10 mars 2007 à 09:31
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
10 mars 2007 à 01:34
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 ?
@++
9 mars 2007 à 15:22
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?.....