Pages: 1
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 :
<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.
add_event_handler('blockmanager_apply', 'ma_fonction_a_moi' );
et dans la fonction 'ma_fonction_a_moi' :
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 :
+------------------+----------------+----------------------------+ | 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)
Hors ligne
Super intéressant ! A retenir !
Encore, des cours sur Piwigo :-)) !
Merci bien Grum !
Hors ligne
+1
Un indispensable ... à mettre dans le wiki-nouveau ?
Hors ligne
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]
Hors ligne
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
Pages: 1