•  » Plugins
  •  » Plugin et template

#1 2009-09-23 18:46:34

mathiasm
Former Piwigo Team
2006-02-06
2692

Plugin et template

Hello*

Il y a le plugin [extension by nicolas] Cumulus Tags Cloud, qui, une fois activé, modifie le template de la page des tags en ajoutant un affichage.
Si je fais un plugin qui modifie aussi la page tags, comment peut-on intégrer l'ensemble de ces modifs ?
J'ai potentiellement les deux options:
- Ajouter un affichage comme pwgCumulus
- Modifier l'affichage des tags par défaut (ailleurs que dans les variables possibles).

Comment peut-on gérer ces modifications cumulées, dans le cas où il n'y a pas d'interférences?





*: oui, je sais on est sur le forum FR :-)

Hors ligne

#2 2009-09-23 19:12:56

P@t
Équipe Piwigo
Nice
2007-06-13
5694

Re: Plugin et template

Il y a aussi [extension by mistic100] Colored Tags qui modifie l'affichage des tags...
Jette un oeil sur ce plugin, il est compatible avec Cumulus.


P@t

Hors ligne

#3 2009-09-23 20:28:24

nicolas
Former Piwigo Team
2004-12-30
1526

Re: Plugin et template

P@t a écrit:

Il y a aussi [extension by mistic100] Colored Tags qui modifie l'affichage des tags...
Jette un oeil sur ce plugin, il est compatible avec Cumulus.

Oui mais je pense que l'approche n'est pas la bonne. D'ailleurs le plugin cumulus est très lié au template utilisé. Je ne modifie pas dynamiquement le template mais je charge celui qui est dans le répertoire du plugin que j'ai créé à partir d'une révision donné du template de yoga.

Je sais que les templates ne sont pas modifiés tous les quatre matins mais on doit pouvoir trouvé une meilleure méthode et avoir un couplage lâche entre plugin et template de base.

Cela rejoint un peu la discussion initiée par flop25 même si je ne suis pas sûr d'avoir bien compris ce qu'il voulait faire exactement.

Je n'ai pas d'idée comme ça, à froid. Il faut essayer de voir comment gère les autres projets. Ce qu'on veut faire porte un nom : extension de template.


Donnez du peps à vos tags
Laissez vos visiteurs vous aidez à tagger vos images avec user_tags

Hors ligne

#4 2009-09-23 22:40:00

mathiasm
Former Piwigo Team
2006-02-06
2692

Re: Plugin et template

Merci Nicolas, tu as compris.

Il faut pouvoir modifier le template associé à une page sans pour autant modifier le fichier.
Ce qu'on pouvait faire en 1.7 et qu'on ne peut plus en Smarty. J'ai vu que Smarty proposait des plugins. Je vais aller voir à quoi ça correspond.

P@t: typet@gs, j'ai vu, mais 1. il ne modifie que le contenu des tags, et 2. il a juste un if en plus si c'est Cumulus qui est actif.

A+

Hors ligne

#5 2009-09-23 23:24:56

mathiasm
Former Piwigo Team
2006-02-06
2692

Re: Plugin et template

Les filtres de pré-compilation ont l'air d'aller dans la bonne direction. Je vais jeter un coup d'oeil.

Hors ligne

#6 2009-09-24 00:02:05

mathiasm
Former Piwigo Team
2006-02-06
2692

Re: Plugin et template

A tester en vrai:
- Définir dans $template une variable $override
celle-ci contient un tableau [ poids => fonction ]
Avant de parser son template, on déclare ces fonctions dans l'ordre des poids.
On parse le template et ça devrait être bon

Pas le courage ce soir, p-ê ce week-end.

Hors ligne

#7 2009-09-24 01:38:07

P@t
Équipe Piwigo
Nice
2007-06-13
5694

Re: Plugin et template

mathiasm a écrit:

Les filtres de pré-compilation ont l'air d'aller dans la bonne direction. Je vais jeter un coup d'oeil.

J'avais raté ca!
Ca m'a l'air excellent!


P@t

Hors ligne

#8 2009-09-24 02:49:27

P@t
Équipe Piwigo
Nice
2007-06-13
5694

Re: Plugin et template

Bizarre, je n'arrive pas à faire fonctionner les filtres de pré-compilation...
D'ailleurs, dans la classe template, il y a deux filtres enregistrés (prefilter_white_space et prefilter_language) qui n'ont pas l'air de fonctionner du tout!

En gros, quand on déclare un filtre, il n'a pas l'air d'etre pris en compte...

Dernière modification par P@t (2009-09-24 02:49:44)


P@t

Hors ligne

#9 2009-09-24 21:03:34

gbo
Membre
Martigues
2006-11-01
1150

Re: Plugin et template

P@t a écrit:

Bizarre, je n'arrive pas à faire fonctionner les filtres de pré-compilation...
D'ailleurs, dans la classe template, il y a deux filtres enregistrés (prefilter_white_space et prefilter_language) qui n'ont pas l'air de fonctionner du tout!

En gros, quand on déclare un filtre, il n'a pas l'air d'etre pris en compte...

Au début des versions RC de Piwigo 2.
j'ai cherché comment mettre en œuvre les filtres (Pre/Post), j'avais ouvert un fil sur ce sujet..Relvice m'avait donné des informations...... je cherche encore!
Si une personne trouve, je suis preneur de la solution

Hors ligne

#10 2009-09-24 22:04:28

mathiasm
Former Piwigo Team
2006-02-06
2692

Re: Plugin et template

P@t a écrit:

Bizarre, je n'arrive pas à faire fonctionner les filtres de pré-compilation...
D'ailleurs, dans la classe template, il y a deux filtres enregistrés (prefilter_white_space et prefilter_language) qui n'ont pas l'air de fonctionner du tout!

En gros, quand on déclare un filtre, il n'a pas l'air d'etre pris en compte...

Dans template.class.php, ligne 422 juste avant le return $source:

Code:

    $source = str_replace('</head>','</head><h3>PREFILTER</h3>', $source);

et ça marche, à condition de purger la compil dudit template.

Je vais donc essayer avec un autre pre-filter (et en même temps, de passer un $smarty->clear_compiled_tpl($handle.'.tpl') pour voir si ça marche.

Hors ligne

#11 2009-09-24 23:29:30

mathiasm
Former Piwigo Team
2006-02-06
2692

Re: Plugin et template

ligne 464 plutôt....

Hors ligne

#12 2009-09-25 00:27:11

mathiasm
Former Piwigo Team
2006-02-06
2692

Re: Plugin et template

ça marche!

je vais me coucher;
je vous fais un CR demain soir

Hors ligne

#13 2009-09-25 00:28:50

P@t
Équipe Piwigo
Nice
2007-06-13
5694

Re: Plugin et template

Bizarre, il me semble avoir purgé les templates justement....
Je re-essairai demain.


P@t

Hors ligne

#14 2009-09-25 23:59:52

mathiasm
Former Piwigo Team
2006-02-06
2692

Re: Plugin et template

mathiasm a écrit:

ça marche!

je vais me coucher;
je vous fais un CR demain soir

euh, demain ? :-)

Hors ligne

#15 2009-09-27 22:22:14

mathiasm
Former Piwigo Team
2006-02-06
2692

Re: Plugin et template

Bon, alors

je charge ce soir le template.class.php modifié.

La fonction load_external_filters charge dans la fonction parse tous les préfiltres, par ordre de poids croissant.
On utilise la fonction set_external_filter avec le poids affecté et le nom d'une fonction.
La fonction appelée doit être de la forme

Code:

function test_filter($source, &$smarty)

Ensuite, explication par l'exemple:

Pour un plugin:

1. Nettoyage
Comme on va modifier les templates, il faut nettoyer les templates modifiés du cache
Pour tags.tpl: $template->smarty->clear_compiled_tpl('tags.tpl');

Attention, si on modifie plusieurs tpl (picture_nav/tpl et picture.tpl, par ex.), il faut purger les 2.
Cette purge est à effectuer à l'install ET à la désinstall (pour regénérer des templates conformes).

2. Cible
Dans main.inc.php:

Code:

if (script_basename() == 'tags')

pour être sur de n'appliquer les modifs que sur la bonne page
et un event_handler de ladite page pour que les .tpl soient chargés:

Code:

  add_event_handler('loc_begin_page_header', 'my_plugin_function_for_tags', 60);

la fonction de définition du préfiltre:

Code:

function my_plugin_function_for_tags()
{
  global $template;
  $template->set_external_filter(60,'test_filter');
  
}

et enfin la fonction de màj elle-même

Code:

function test_filter($source, &$smarty)
{
      $orig = '{if $display_mode == \'cloud\'}';
      $my_data = '<a>new link in head</a>
if $display_mode == \'cloud\'}';
      $source = str_replace($orig,$my_data, $source);
      return $source;
}

Hors ligne

  •  » Plugins
  •  » Plugin et template

Pied de page des forums

Propulsé par FluxBB

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