Ticket #243 (closed enhancement: fixed)
Ajouter des comportements dans rsExtPost::getContent et rsExtPost::getExcerpt
Reported by: | sacha | Owned by: | olivier |
---|---|---|---|
Priority: | lowest | Milestone: | 2.1 |
Component: | module:core | Version: | 2.0 |
Severity: | minor | Keywords: | |
Cc: |
Description
Pour les plugins qui transforment le contenu au moment de son affichage, il serait très intéressant d'ajouter des comportements qui permettront aux plugins de modifier tour à tour le contenu à afficher.
Actuellement, si des plugins rajoutent des extensions recordset pour surcharger $rs->getContent(), c'est l'extension du dernier plugin qui sera utilisée, et toutes les autres ne seront pas prises en compte (pas d'émoticones donc).
Le diff proposé en pièce jointe permet aux plugins de modifier le contenu sans se marcher sur les pieds. Voici un exemple d'utilisation :
$core->addBehavior('rsExtPostGetContent',array('MyPlugin','rsExtPostGetContent')); $core->addBehavior('rsExtPostGetExcerpt',array('MyPlugin','rsExtPostGetExcerpt')); class MyPlugin { public static function rsExtPostGetContent(&$rs) { $rs->post_content_xhtml = strtolower($rs->post_content_xhtml); } public static function rsExtPostGetExcerpt(&$rs) { $rs->post_excerpt_xhtml = strtoupper($rs->post_excerpt_xhtml); } }
P.S. Ce sujet a été initialement évoqué sur le forum : http://forum.dotclear.net/viewtopic.php?id=33484
Attachments
Change History
Changed 17 years ago by sacha
-
attachment
r1848.diff
added
comment:1 Changed 17 years ago by olivier
- Priority changed from normal to lowest
- Status changed from new to assigned
- Severity changed from normal to minor
- Milestone changed from 2.0 to 2.1
comment:2 Changed 17 years ago by sacha
Désolé, le diff proposé ne marche pas, ce n'était qu'une vague illusion.
Au début, j'ai essayé d'affecter la valeur de $rs->post_content_xhtml à une variable puis passer cette variable en argument du behavior, mais je n'ai pas réussi à modifier le contenu de cette variable en utilisant le passage par référence dans ma fonction du plugin.
J'ai l'impression que le passage par référence ne fonctionne que pour des objets dans le système de behaviors. Je n'ai pas compris pourquoi.
comment:3 Changed 17 years ago by olivier
C'est la possibilité de chaîner les extensions de recordset qui est nécessaire.
Ajout des behaviors pour modifier le contenu au moment de l'affichage