Pages: 1
Salut, j'essai d'ajouter un éléments sous chaques vignettes qui s'affichent lorsque l'on est dans une catégorie. J'ai trouvé 3 entrées :
- loc_begin_index_thumbnails;
- loc_end_index_thumbnails;
- loc_index_category_thumbnail.
Mais aucune ne correspond à ce que je cherche. Il y a possibilité d'en ajouter facilement ?
Hors ligne
- les actions pour les vignettes des categories sont:
loc_begin_index_category_thumbnails, loc_index_category_thumbnail, loc_end_index_category_thumbnails
- les actions pour les vignettes des images sont:
loc_begin_index_thumbnails, loc_index_thumbnail, loc_end_index_thumbnails
donc je suppose que c'est loc_index_thumbnail que tu cherches ...
Hors ligne
Salut, bon j'ai continué à fouillé. Dans mon fichier main.inc.php j'ai ajouté ça :
add_event_handler('loc_end_index_thumbnails', array(&$DlMulti, 'category_toto') );
Et la fonction ressemble à ça :
function category_toto() { global $template; $template->assign_block_vars('thumbnails.line.thumbnail.', array( 'INPUT' => 'too', ) ); }
Ca me génère pas d'erreur, mais ça m'affiche rien en dessous de chaque vignette. Surement parce que INPUT n'est pas dans le fichier thumbnail.tpl, donc maintenant reste à trouver comment l'ajouter sans modifier le fichier.
Hors ligne
C'est plutot loc_index_thumbnail que tu dois surcharger.
Tu veux mettre qq chose pour chacune des vignettes. begin et end sont appeles une seule fois, mais loc_index_thumbnail est appele chaque fois.
Hors ligne
remoi, je continue mes recherches. J'ai bien réussi à faire marché mon bazar avec ce code cette fois :
function category_toto() { global $template; $template->assign_block_vars('thumbnails.line.thumbnail.element_name', array( 'INPUT' => 'too', ) ); $template->assign_var_from_handle('THUMBNAILS', 'thumbnails'); }
L'appel lui n'a pas changé. Donc à cette état rien ne s'affiche dans thumbnail.tpl. Normal puisque la variable INPUT n'est pas dans le fichier, il faut rajouter :
<!-- BEGIN element_name --> {thumbnails.line.thumbnail.element_name.NAME} {thumbnails.line.thumbnail.element_name.INPUT} <-- Code rajouté <!-- END element_name -->
Est-ce qu'il y a possibilité d'ajouter une variable sans modifier les fichiers tpl ?
Hors ligne
Tu connais déjà la réponse sans doute...
La seule chose que tu peux sans doute faire est de modifier le contenu de
thumbnails.line.thumbnail.element_name.NAME
Je n'ai pas essayé mais j'imagine bien que cela devrait se faire (Cf. nouvelles fonctions apportées par rvelices).
C'est pour cela que j'avais lancé des idées d'évolutions des templates.
8-)
Hors ligne
C'est bien ce qu'il me semblais. D'un autre côté je suis exigeant ce n'est que la premiere version du gestionnaire de plugin. On ne peux pas tout avoir au premier coups. Donc pour le moment il y aura toujours une petite intervention à faire dans les fichiers tpl.
Au contraire on peut envisager dans la procédure d'installation la copie d'un nouveau fichier tpl, reste à savoir comment faire pour gérer les modifications déjà faite par le webmaster.
... Je viens de tester l'idée de VDigital avec la variable NAME et ça marche
function category_thumbnail($row) { global $template; $template->assign_block_vars('thumbnails.line.thumbnail.element_name', array( 'NAME' => '<input type="checkbox" name="id_images[]" value="'.$row['id'].'">', ) ); }
Ca ajoute bien à la variable existante. Bon au contraire bizarrement les cases s'affichent en haut à gauche au lieu d'être avant ou après le nom de l'image.
Dernière modification par flipflip (2007-05-07 14:41:30)
Hors ligne
Comme ça de mémoire, je n'ai pas ce qu'il faut pour chercher...
Mais il doit y avoir une autre fonction que assign_block_vars...
Tu dois d'abord récupérer la valeur de NAME.
Puis la modifier ou la supprimer avant de l'affecter.
Cela veut dire que:
Le template avait des balises ouvertes <div><ul><li><a> il faut que tu en tiennes compte et que celle-ci (ou d'autres) soient ouvertes même après ta modification afin qu'un autre plugins puisse agir tout comme le tien, et que les balises fermantes du template agissent sans erreur.
8-)
Hors ligne
Dans template.php j'ai bien trouvé concat_var() mais je vois pas trop comment l'utiliser. J'ai essayé :
$template->concat_var('thumbnails.line.thumbnail.element_name.NAME', '<input type="checkbox" name="id_images[]" value="'.$row['id'].'">');
Mais ça m'affiche toujours le nom de l'image mais pas de case en vue.
Dernière modification par flipflip (2007-05-07 16:25:42)
Hors ligne
flipflip a écrit:
Code:
$template->concat_var('thumbnails.line.thumbnail.element_name.NAME', '<input type="checkbox" name="id_images[]" value="'.$row['id'].'">');
concat_var marche seulement pour les variables non block (au meme niveau que assign_var ou assign_vars)
pour les variables block on a seulement merge_block_vars . mais il fonctionne comme le array_merge .
je te propose pour commencer de changer le template. Ensuite quand tu seras presque pret, tu me feras un zip et je vais essayer de regarder chez moi si c'est possible et comment faire sans modifier le template.
Hors ligne
rvelices a écrit:
concat_var marche seulement pour les variables non block (au meme niveau que assign_var ou assign_vars)
pour les variables block on a seulement merge_block_vars . mais il fonctionne comme le array_merge .
Bien vu !!!
Hors ligne
Salut.
Ok je vais modifier le fichier thumbnail.tpl et d'autres si nécessaire et ensuite je t'envoi le tout rvelices.
Je revient sur ce que tu m'a dit VDigital concernant les balises ouvertes. Donc avec le code suivant dans ma fonction :
function category_thumbnail($row) { global $template; $template->assign_block_vars('thumbnails.line.thumbnail.element_name', array( 'INPUT' => '<input type="checkbox" name="id_images[]" value="'.$row['id'].'">' ) ); }
Et avec ceci dans thumbnail.tpl :
<span class="thumbLegend"> <!-- BEGIN element_name --> {thumbnails.line.thumbnail.element_name.NAME} <!-- RAJOUT DownloadMulti --> {thumbnails.line.thumbnail.element_name.INPUT} <!-- RAJOUT DownloadMulti --> <!-- END element_name -->
Les cases à cocher s'affichent en haut à gauche de l'écran alors que si je vais dans la source via le navigateur, elles sont bien après le NAME. C'est là ou j'ai un peu (beaucoup) de mal à comprendre pourquoi. Ma fonction est appelé par le event_trigger qui lui se trouve après le bloc qui renseigne NAME. Alors je ne vois vraiment pas comment gérer la position des cases ?
Philippe.
Hors ligne
flipflip a écrit:
Les cases à cocher s'affichent en haut à gauche de l'écran alors que si je vais dans la source via le navigateur, elles sont bien après le NAME. C'est là ou j'ai un peu (beaucoup) de mal à comprendre pourquoi. Ma fonction est appelé par le event_trigger qui lui se trouve après le bloc qui renseigne NAME. Alors je ne vois vraiment pas comment gérer la position des cases ?
On devrait pouvoir les placer un peu où on le souhaite avec du css, non?
8-)
Hors ligne
ah... le css... bon ba j'suis mal alors :(
C'est vraiment un truc que j'ai du mal à comprendre :(
....
Formidable j'ai trouvé pour mettre mes cases à cocher :
// Affiche les cases à cocher derrière le nom de l'image function DmCategory_thumbnail($row) { global $template; $template->assign_block_vars('thumbnails.line.thumbnail.element_name', array( 'NAME' => '<span class="DmThumbnailInput"><input type="checkbox" name="id_images[]" value="'.$row['id'].'"></span>' ) ); } // Chargement de fichier dans l'entête du template function DmHeader() { global $template; $DmUrl = get_root_url().'plugins/download_multi/template/'; $template->assign_block_vars('head_element', array( 'CONTENT' => '<link rel="stylesheet" type="text/css" href="'.$DmUrl.'DownloadMulti.css">' ) ); }
Et dans le main.inc.php :
add_event_handler('loc_end_page_header', array(&$DlMulti,'DmHeader')); add_event_handler('loc_index_thumbnail', array(&$DlMulti, 'DmCategory_thumbnail') );
Bien sur j'ai été obligé d'ajouter la variable INPUT (Edit : c'est plus nécessaire de modifer le fichier thumbnail.tpl) dans thumbnail.tpl mais c'est un autre problème.
Dernière modification par flipflip (2007-05-28 17:50:19)
Hors ligne
Pages: 1