Submitted by gilbertdelyon on
Bonjour,
Je viens d'écrire mon premier module, très simple, avec un
hook_filter($op, $delta= 0, $format= -1, $text= '')
A quoi servent $delta et $format? Quelqu'un saurait-il l'expliquer clairement?
Je crois comprendre que $delta sert à implanter plusieurs filtres dans le même module et c'est précisément ce que j'aimerais faire, mais je ne trouve pas d'exemple concret dans les tutos du web.
Merci d'avance de votre aide.
Effectivement à lire l'api
Permalien Soumis par juliendubreuil le 22 Décembre, 2009 - 23:35
Effectivement à lire l'api $delta sert à utiliser plusieurs filtres pour un seul module
Voici le lien vers l'api http://api.drupal.org/api/function/hook_filter
Regarde du coté du la fonction filter_filter : http://api.drupal.org/api/function/filter_filter
En espérant avoir pu t'aider, je ne m'en suis jamais servis :)
Comme le dit Julien, un
Permalien Soumis par Yoran le 23 Décembre, 2009 - 06:06
Comme le dit Julien, un module peut fournir une infinité de filtres que tu peux utiliser dans tes formats d'entrées (ou format de texte). Le delta est juste "l'indexe du filtre visé pour un module donné".
Pour prendre un exemple, si ton module fournis deux filtres. Tu vas dans le cas $op=='list' indiquer à drupal la liste de ces filtres sous la forme array('nom_filtre_1'=>'description du filtre 1', 'nom_filtre_2'=>'description du filtre 2').
Et bien "nom_filtre_1" et "nom_filtre_2" sont les deltas respectifs de chacun de tes deux filtres.
Lorsque Drupal veut utiliser l'un des deux filtres, il passera dans l'argument "delta" l'un de ces deux noms. A toi dans le cas $op=='process' de vérifier $delta pour appliquer le filtre qui va bien.
Le même principe est visible sur le hook_block car là aussi, un même module peut fournir plusieurs blocs.
D’accord, mais alors
Permalien Soumis par gilbertdelyon le 23 Décembre, 2009 - 21:55
D'accord, mais alors comment Drupal détermine la valeur qu'il donne à $delta quand il fait appel au hook?
Mon application est très basique et classique. Il s'agit de faciliter l'écriture des contenus en utilisant des codes dans le genre des "bbcode".
Le module contient une function
function monmodule_filter($op,$delta...etc...)
Pour$op =='process'
je traite le texte dans unepreg-replace(...)
qui modifie certaines parties du contenu.Tout bien réfléchi je n'ai sans doute pas besoin de plusieurs hook_filter dans le module. Il doit suffire d'appliquer plusieurs
preg-replace(...)
à la suite.