Pages: 1
Bonjour,
Je cherche quel est le code , dans un plugin, pour ajouter dynamiquement un bouton au dessus d'une image.
Juste au dessus de id="theImage"
J'ai essayé ce code php ci-dessous mais ça ne marche pas, ça positionne le bouton en début de la page html :
function ajouter_btnOverlay() {
echo '<div id="overlayContent" style="
position:absolute; top:10px; left:10px;
background:rgba(0, 0, 0, 0.5); color:white;
padding:5px; border-radius:5px;">
<button id="btnOverlay">Action</button>
</div>';
}
add_event_handler('loc_end_picture', 'ajouter_btnOverlay');
Hors ligne
je ne fais jamais d'affichage via du code PHP, je passe par smarty et les templates
Avec un préfiltre tu peux modifier dynamiquement le contenu de la page par défaut
le but est de modifier le template pictute.tpl de :
id="theImage"
à
{$MON_BT}
id="theImage"
_______________________________________________________
avec quelque chose comme cela ( je n'ai rien testé c'est juste pour montrer l'architecture générale):
add_event_handler('loc_begin_picture', 'ajouter_btnOverlay');
function ajouter_btnOverlay()
{ $contenu_html_du_bouton = '<button id="btnOverlay">Action</button>';
// le css sera dans un fichier css......
global $template;
$template->set_prefilter('picture', 'add_mon_bouton');
$template->assign('MON_BT',$contenu_html_du_bouton);
}
function add_mon_bouton($content)
{ $search = 'id="theImage"';
$replacement = '{$MON_BT}'. $search.
return str_replace($search, $replacement, $content);
}
Hors ligne
bonjour gbo,
Merci pour les infos, après pas mal d'essais je suis arrivé à mettre un bouton sous l'image.
Voilà le code à mettre dans main.inc.php du plugin
//--------------------------------------------------------------------------
// Ajout d'un bouton en dessous de la photo/vidéo
add_event_handler('loc_begin_picture', 'ajouter_btnOverlay');
function ajouter_btnOverlay() {
global $template;
$contenu_html_du_bouton = '<div id="overlayContent" class="overlayContent" >
<button id="btnOverlay">Action</button>
</div>';
// Enregistrement du pré-filtre pour modifier le template
$template->set_prefilter('picture', 'add_mon_bouton');
$template->assign('MON_BT', $contenu_html_du_bouton);
}
function add_mon_bouton($content)
{
$search = '{$ELEMENT_CONTENT}'; // éléments Image dans picture.tpl
$replacement = '{$ELEMENT_CONTENT}{$MON_BT}'; // place le bouton sous l'image
return str_replace($search, $replacement, $content);
}
// --------------------------------------------------------------
Dans /tools/triggers_list.php on retrouve une liste des triggers
Est ce qu'il y a une documentation sur ces éléments ?
Par exemple pourquoi choisir 'loc_begin_picture' plutôt que 'loc_end_picture' qui font tous les deux référence à picture.php ?
Hors ligne
je ne sais pas si la documentation précise l'utilisation des triggers...
Selon moi(**), il n'y a pas de réponse formelle(pour les triggers généraux).
La boîte à outils de PIWIGO pour la personnalisation est très complète.
Chaque page propose un trigger BEGIN et un trigger END.
Selon ce que tu souhaites faire, ce sera plus simple/possible dans l'un ou l'autre des triggers.
Par défaut je privilégie l'ordre logique le BEGIN ,si c'est plus simple ou impossible, je prends le END
Impossible, signifie que les variables dont j'aurai besoin n'existent pas dans le BEGIN, mais sont définies dans le END.
A contrario dans le END tu ne pourras plus revenir sur certains éléments.
Dans ta demande initiale, je t'ai proposé un pré filtre, car l'ajout/modification était basique et ne nécessitait pas de logique.
Cela correspondait bien à l'ajout dynamique d' une variable, à un emplacement que tu avais choisi.
il existe déjà de variables pour des emplacements prédéfinis:(ex pour picture)
{$PLUGIN_PICTURE_ACTIONS}
{$PLUGIN_PICTURE_AFTER}
Si ton ajout est plus important ou que tu souhaites de la logique:
Tu peux/dois définir un mini template personnel et l'ajouter à la page.
Tout cela pour rester dynamique, sinon il y a les template-extensions.
** RQ:
je ne suis pas un développeur, je m'amuse avec un petit site.
L'équipe PWIGO me corrigera, si l'on peut mieux faire......
Hors ligne
Pages: 1