SPIP 2.0.2 Menu-hierarchique-rubriques

Bonjour a tous et Bonnes fêtes,
Je reviens sur ce menu decrit ici :

http://www.spip-contrib.net/Menu-hierarchique-rubriques

  je suis en local avec SPIP 2.0.2

(linux debian etch 2.6.18-6-686
apache2, php4 msql et quanta+)

a la place du menu j'ai une erreur:

Warning: ksort() expects parameter 1 to be array, null given in /mnt/pingouin/00sites/10-03-2008-www/www/00le-clapotis/ecrire/public/assembler.php(534) : eval()'d code on line 347

Warning: Invalid argument supplied for foreach() in /mnt/pingouin/00sites/10-03-2008-www/www/00le-clapotis/ecrire/public/assembler.php(534) : eval()'d code on line 348

... bien que sur la page de spip contrib il y ait en haut a droite dans la categorie versions:

spip 2.0.0 (entre autre)

... par-contre, si je place le code du menu (du php) directement dans la page rubrique il fonctionne parfaitement ,
  mais pas lorsque
je fait un inclure du style:

<INCLURE{fond=inc/inc-menu}{id_rubrique} />

ou du style:

[(#INCLURE{fond=inc/inc-menu}{id_rubrique})]

et je ne trouve toujours pas d'ou cela peut venir....

j'ai 3 sites que j'aimerais bien mettre a jour vers spip2
(ce menu est pratique)
...Pour infos en spip 1.9.2g tout fonctionne bien (www.le-clapotis.net)

Merci d'avance,
cordialement,
Jmarc dufour

Ca sent la variable globale non reconnue dans le contexte, ça…
Probablement que l’exécution sous <INCLURE…> est faite sous l’empire d’une fonction.
Je connais mal Spip, mais bien PHP, d’où le flou de la suggestion : repérer le nom de la variable $… du « ksort($…) », et rajouter en début de module « global $…; ».

----- Original Message -----
From: jmarco
To: spip@rezo.net
Sent: Friday, December 26, 2008 3:24 PM
Subject: [Spip] SPIP 2.0.2 Menu-hierarchique-rubriques

Bonjour a tous et Bonnes fêtes,
Je reviens sur ce menu decrit ici :

http://www.spip-contrib.net/Menu-hierarchique-rubriques

je suis en local avec SPIP 2.0.2

(linux debian etch 2.6.18-6-686
apache2, php4 msql et quanta+)

a la place du menu j’ai une erreur:

Warning: ksort() expects parameter 1 to be array, null given in
/mnt/pingouin/00sites/10-03-2008-www/www/00le-clapotis/ecrire/public/assembler.php(534)
: eval()'d code on line 347

Warning: Invalid argument supplied for foreach() in
/mnt/pingouin/00sites/10-03-2008-www/www/00le-clapotis/ecrire/public/assembler.php(534)
: eval()'d code on line 348

… bien que sur la page de spip contrib il y ait en haut a droite dans
la categorie versions:

spip 2.0.0 (entre autre)

… par-contre, si je place le code du menu (du php) directement dans la
page rubrique il fonctionne parfaitement ,
mais pas lorsque
je fait un inclure du style:

<INCLURE{fond=inc/inc-menu}{id_rubrique} />

ou du style:

[(#INCLURE{fond=inc/inc-menu}{id_rubrique})]

et je ne trouve toujours pas d’ou cela peut venir…

j’ai 3 sites que j’aimerais bien mettre a jour vers spip2
(ce menu est pratique)
…Pour infos en spip 1.9.2g tout fonctionne bien (www.le-clapotis.net)

Merci d’avance,
cordialement,
Jmarc dufour


liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

irc://irc.freenode.net/spip ou http://embed.mibbit.com/?server=irc.freenode.net&channel=%23spip

cFreed a écrit :

Ca sent la variable globale non reconnue dans le contexte, ça...
Probablement que l'exécution sous <INCLURE...> est faite sous l'empire d'une fonction.
Je connais mal Spip, mais bien PHP, d'où le flou de la suggestion : repérer le nom de la variable $... du "ksort($...)", et rajouter en début de module "global $...;".

Bonjour cFreed,
voici le contenu du fichier menu.html:

<?php
$i=0;
<BOUCLE_menu(RUBRIQUES){racine}{par titre}{inverse}{doublons}>
  <BOUCLE_menu_n(RUBRIQUES) {id_rubrique} {par titre}>
$menu[$i]["[(#TITRE|kenum)] - #ID_RUBRIQUE"]=array("parent"=>"#ID_PARENT","titre"=>"[(#TITRE|denum)]","idrub"=>"#ID_RUBRIQUE","idart"=>"");
    $i++;
    <BOUCLE_menu_a(ARTICLES){id_rubrique}{par titre}{doublons}>
$menu[$i]["[(#TITRE|kenum)] - #ID_ARTICLE"]=array("parent"=>"#ID_RUBRIQUE","titre"=>"[(#TITRE|denum)]","idrub"=>"","idart"=>"#ID_ARTICLE");
    </BOUCLE_menu_a>
    <BOUCLE_menu_r(RUBRIQUES) {id_parent} {par titre}{doublons}>
$menu[$i]["[(#TITRE|kenum)] - #ID_ARTICLE"]=array("parent"=>"#ID_RUBRIQUE","titre"=>"[(#TITRE|denum)]","idrub"=>"","idart"=>"#ID_ARTICLE");
    <BOUCLE_sous_menu(boucle_menu_n)></BOUCLE_sous_menu>
    </BOUCLE_menu_r>
    $i--;
  </BOUCLE_menu_n>
</BOUCLE_menu>

  function ecrire_menu ($i,$parent) {
    global $menu;
    ksort($menu[$i],SORT_NUMERIC);
  foreach($menu[$i] as $menu_o ) {
    $largeur=201-(($i-1)*16);
      if ($menu_o["parent"]==$parent) {
        if ($menu_o["idrub"]!="") {
          echo "
            <div class=\"lienr\">
  <div class=\"plusmoins\" id=\"plusmoins".$menu_o["idrub"]."\" onclick=\"change(".$menu_o["idrub"].");\" > </div>
  <a id=\"tete_rub".$menu_o["idrub"]."\" class=\"alien\" href=\"#URL_PAGE{rubrique,id_rubrique}=".$menu_o["idrub"]." \">".$menu_o["titre"]."</a>
            </div>
            <div id=\"rub".$menu_o["idrub"]."\" class=\"niv\" >
          ";
          $prochain_parent=$menu_o["idrub"];
          $k=1+$i;
          ecrire_menu ($k,$prochain_parent);
          echo "
            </div>
          ";
        } else {
          echo "
  <div class=\"lien\"><a id=\"art".$menu_o["idart"]."\" class=\"alien\" href=\"#URL_PAGE{article,id_article}=".$menu_o["idart"]."\"><img src='squelettes/sculpteurs3/images/file.png' width='16' height='16' alt='cliquez ici' title='cliquez ici' />".$menu_o["titre"]."</a></div>
          ";
        }
      }
    }
  }
  ecrire_menu(0,0);
  ?>

<B_menu_ouvre_article>
<BOUCLE_menu_ouvre_article(ARTICLES){id_article}>
  <script type="Text/JavaScript">
  <BOUCLE_menu_voir_article(HIERARCHIE){id_article}>
    change('#ID_RUBRIQUE');
  </BOUCLE_menu_voir_article>
  document.getElementById('art#ID_ARTICLE');
  </script>
</BOUCLE_menu_ouvre_article>
</B_menu_ouvre_article>

  <BOUCLE_menu_ouvre_rubrique(RUBRIQUES){id_rubrique}>
    <script type="Text/JavaScript">
    <BOUCLE_menu_voir_rubrique(HIERARCHIE)>
      change('#ID_RUBRIQUE');
    </BOUCLE_menu_voir_rubrique>
    change('#ID_RUBRIQUE');
    document.getElementById('tete_rub#ID_RUBRIQUE');
    </script>
  </BOUCLE_menu_ouvre_rubrique>
<//B_menu_ouvre_article>

... Je n'y connais rien en php ( et spip pas mieux...)
mais le "global" dont tu parles a bien l'air d'etre declaree ?

Jmarc

En effet, ça n’est donc pas dans la fonction mais au niveau au-dessus.
Est-ce que le fichier HTML ci-dessous est bien le « inc-menu.html » cité dans le message précédent ?
Si oui, on peut essayer ça :

<?php **global $menu;** $i=0; <BOUCLE_menu(RUBRIQUES)... ...

Fred

----- Original Message -----
From: jmarco
To: spip@rezo.net
Sent: Friday, December 26, 2008 5:32 PM
Subject: Re: [Spip] SPIP 2.0.2 Menu-hierarchique-rubriques

cFreed a écrit :

Ca sent la variable globale non reconnue dans le contexte, ça…
Probablement que l’exécution sous <INCLURE…> est faite sous l’empire
d’une fonction.
Je connais mal Spip, mais bien PHP, d’où le flou de la suggestion :
repérer le nom de la variable $… du « ksort($…) », et rajouter en
début de module « global $…; ».

Bonjour cFreed,
voici le contenu du fichier menu.html:

<?php $i=0; $menu[$i]["[(#TITRE|kenum)] - #ID_RUBRIQUE"]=array("parent"=>"#ID_PARENT","titre"=>"[(#TITRE|denum)]","idrub"=>"#ID_RUBRIQUE","idart"=>""); $i++; $menu[$i]["[(#TITRE|kenum)] - #ID_ARTICLE"]=array("parent"=>"#ID_RUBRIQUE","titre"=>"[(#TITRE|denum)]","idrub"=>"","idart"=>"#ID_ARTICLE"); $menu[$i]["[(#TITRE|kenum)] - #ID_ARTICLE"]=array("parent"=>"#ID_RUBRIQUE","titre"=>"[(#TITRE|denum)]","idrub"=>"","idart"=>"#ID_ARTICLE"); $i--;

function ecrire_menu ($i,$parent) {
global $menu;
ksort($menu[$i],SORT_NUMERIC);
foreach($menu[$i] as $menu_o ) {
$largeur=201-(($i-1)*16);
if ($menu_o[« parent »]==$parent) {
if ($menu_o[« idrub »]!=«  ») {
echo "

"; $prochain_parent=$menu_o["idrub"]; $k=1+$i; ecrire_menu ($k,$prochain_parent); echo "
"; } else { echo " "; } } } } ecrire_menu(0,0); ?>

<B_menu_ouvre_article>
<BOUCLE_menu_ouvre_article(ARTICLES){id_article}>

</BOUCLE_menu_ouvre_article>
</B_menu_ouvre_article>

<BOUCLE_menu_ouvre_rubrique(RUBRIQUES){id_rubrique}>

</BOUCLE_menu_ouvre_rubrique>
<//B_menu_ouvre_article>

… Je n’y connais rien en php ( et spip pas mieux…)
mais le « global » dont tu parles a bien l’air d’etre declaree ?

Jmarc


liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

irc://irc.freenode.net/spip ou http://embed.mibbit.com/?server=irc.freenode.net&channel=%23spip

cFreed a écrit :

En effet, ça n'est donc pas dans la fonction mais au niveau au-dessus.
Est-ce que le fichier HTML ci-dessous est bien le "inc-menu.html" cité dans le message précédent ?
Si oui, on peut essayer ça :

    <?php
    *global $menu;*
    $i=0;
    <BOUCLE_menu(RUBRIQUES)...
    ...

Fred

Bravo, super,
oui c'est ce fichier et avec ta proposition
cela fonctionne parfaitement. :slight_smile:

Merci,
ca faisait trois mois que je m'arrachais les cheveux sur ce detail...
Je vais pouvoir preparer la migration en ligne.

Bonnes fêtes,
cordialement,
Jmarc

Trois mois…!? Bigre…
Content d’avoir pu être utile.
Bonnes fêtes.

Fred

----- Original Message -----
From: jmarco
To: spip@rezo.net
Sent: Friday, December 26, 2008 6:49 PM
Subject: [Spip] Resolu: SPIP 2.0.2 Menu-hierarchique-rubriques

cFreed a écrit :

En effet, ça n’est donc pas dans la fonction mais au niveau au-dessus.
Est-ce que le fichier HTML ci-dessous est bien le « inc-menu.html »
cité dans le message précédent ?
Si oui, on peut essayer ça :

<?php *global $menu;* $i=0; <BOUCLE_menu(RUBRIQUES)... ... Fred

Bravo, super,
oui c’est ce fichier et avec ta proposition
cela fonctionne parfaitement. :slight_smile:

Merci,
ca faisait trois mois que je m’arrachais les cheveux sur ce detail…
Je vais pouvoir preparer la migration en ligne.

Bonnes fêtes,
cordialement,
Jmarc


liste spip
spip@rezo.net - désabonnement : spip-off@rezo.net

Infos et archives : http://listes.rezo.net/mailman/listinfo/spip

Documentation de SPIP : http://www.spip.net/

irc://irc.freenode.net/spip ou http://embed.mibbit.com/?server=irc.freenode.net&channel=%23spip