#1 2009-09-08 23:06:05

grum
Former Piwigo Team
50% Nantes - 50% Paris
2007-09-10
2502

Modifier dynamiquement le contenu des blocs de menu

Je reprends ici le truc décrit dans le [Forum, post 119242 by grum in topic 16100] MOD Additional pages et recherche.
Il est valable valable pour Piwigo 2.0.x


Les éléments du bloc "Menu" sont générés au travers du template menubar_menu.tpl.

Dans le template, les éléments du bloc sont affichés par cette petite boucle :

Code:

  
<ul>
  {foreach from=$block->data item=link}
    {if is_array($link)}
      <li><a href="{$link.URL}" title="{$link.TITLE}" {if isset($link.REL)}{$link.REL}{/if}>{$link.NAME}</a></li>
    {/if}
  {/foreach}
</ul>

Le bloc dispose d'un tableau data au sein duquel sont stockés les éléments du menu.
Chaque élément du tableau data est lui même tableau de la forme Array("URL" => "...", "TITLE"=>"...", "REL" => "...", "NAME" => "...");

Pour modifier dynamiquement le contenu d'un bloc, ou d'un élément de bloc, il faut placer un trigger sur l'évènement blockmanager_apply.

Code:

   add_event_handler('blockmanager_apply', 'ma_fonction_a_moi' );

et dans la fonction 'ma_fonction_a_moi' :

Code:

function ma_fonction_a_moi( $menu_ref_arr )
{
   // on récupère l'objet pointant sur le menu
    $menu = & $menu_ref_arr[0];

   //on récupère les élements du block "menu"
   $block = $menu->get_block( 'mbMenu' );


  // exemple :  pour supprimer le lien 'tags'
  unset( $block->data['tags'] );

  // exemple : on rajoute le lien 'truc'
    $block->data['truc'] =
      array(
        'TITLE'=>'titre de mon lien',
        'NAME'=>'truc',
        'URL'=> 'http://machin.com/mapageamoi.php'
      );
}

Ces bouts de code peuvent être ajoutés facilement au travers d'un plugin personnel.



Les différents blocks de Piwigo sont :

Code:

+------------------+----------------+----------------------------+
| identifiant      | Bloc de menu   | Template associé           |
+ -----------------+----------------+----------------------------+
| mbCategories     | Catégories     | menubar_categories.tpl     |
| mbTags           | Tags           | menubar_tags.tpl           |
| mbSpecials       | Spéciales      | menubar_specials.tpl       |
| mbLinks          | Liens          | menubar_links.tpl          |
| mbMenu           | Menu           | menubar_menu.tpl           |
| mbIdentification | Identification | menubar_identification.tpl |
+------------------+----------------+----------------------------+

Pour modifier dynamiquement le contenu de chacun, il faut :
- étudier le template, pour déterminer les données exploitées dans celui-ci
- étudier le fichier include/menubar.inc.php qui alimente les données du template

A noter que les plugins peuvent intervenir eux aussi sur les éléments de menu au travers du trigger blockmanager_apply.
Deux possibilités :
- votre trigger est déclenché le premier
- votre trigger est déclenché en dernier
En fonction de l'ordre dans lequel les fonctions associées aux évènements sont appelées, les résultats peuvent être différents... Il faudra alors veiller à forcer une priorité haute ou basse) sur votre trigger.

Dernière modification par grum (2009-09-08 23:08:57)


Mes photos avec Piwigo évidemment !
[ www.grum.fr ] [ photos.grum.fr ]

Hors ligne

#2 2009-09-09 00:21:14

LucMorizur
Membre
Vienne (Isère, 38)
2009-03-01
1969

Re: Modifier dynamiquement le contenu des blocs de menu

Super intéressant ! A retenir !

Encore, des cours sur Piwigo :-)) !

Merci bien Grum !

Hors ligne

#3 2009-12-12 10:57:02

tosca
Former Piwigo Team
Cévennes (Gard)
2006-09-23
3818

Re: Modifier dynamiquement le contenu des blocs de menu

+1
Un indispensable ... à mettre dans le wiki-nouveau ?

Hors ligne

#4 2009-12-12 11:13:22

Gotcha
Ex Equipe Piwigo
Pierrelatte (26)
2007-03-14
13331

Re: Modifier dynamiquement le contenu des blocs de menu

tosca a écrit:

Un indispensable ... à mettre dans le wiki-nouveau ?

Vous allez me rendre chèvre avec le boulot qu'il y a par derrière à revoir le wiki.


Comment ça on ne m'avait rien demandé de faire ?!
8-)



Les astuces seront à rajouter par la suite c'est certain. Pour le moment, j'ai déjà fort à faire avec rien que l'existant.
Voir la démo pas à jour => ici (pas à jour)
Voir le sujet dédié => ici

[/HS]


Ayez comme premier réflexe de consulter le wiki.
Ensuite, veuillez effectuer une recherche sur le forum avant de poser votre question.

LE FAIRE EST LE REVELATEUR DE L'ETRE

Hors ligne

#5 2009-12-12 11:22:48

tosca
Former Piwigo Team
Cévennes (Gard)
2006-09-23
3818

Re: Modifier dynamiquement le contenu des blocs de menu

Gotcha a écrit:

Vous allez me rendre chèvre avec le boulot qu'il y a par derrière à revoir le wiki.


Comment ça on ne m'avait rien demandé de faire ?!
8-)

Scusi, je prends le train en marche, et je fais des enjambées doubles pour essayer de combler mon retard ;)
Je ne sais pas si je peux t'être d'une grande aide, étant donné que j'ai tout à (re)découvrir, mais si je peux donner un coup de main ...

Hors ligne

Pied de page des forums

Propulsé par FluxBB

github twitter newsletter Faire un don Piwigo.org © 2002-2024 · Contact