Ticket #503 (closed enhancement: fixed)
Ajout behavior du type urlHandlerHandleTpl
| Reported by: | bruno | Owned by: | bruno |
|---|---|---|---|
| Priority: | normal | Milestone: | 2.2 |
| Component: | module:core | Version: | 2.1 |
| Severity: | normal | Keywords: | |
| Cc: |
Description
Il pourrait être intéressant d'appeler un behavior dans dcUrlHandlers.serveDocument, en début de fonction, afin de permettre à un plugin tiers de modifier à la volée le fichier tpl à servir. L'avantage de le faire au début permet de ne pas casser les éventuels systèmes de cache appelés après.
Coté appel, une référence au tpl, ainsi qu'au contexte devraient suffire :
$core->callBehavior('urlHandlerHandleTpl',&$tpl, &$_ctx);
Exemple d'application : servir un template particulier pour une catégorie/billet/blog donnés
Cela éviterait de dupliquer du code de dcUrlHandler, comme dans l'exemple de pep ( http://callmepep.org/bricoland/post/2008/04/29/Template-personnalise-par-categorie)
Change History
comment:2 in reply to: ↑ 1 Changed 17 years ago by pep
Replying to olivier:
Je suis pas convaincu d'autant que l'exemple de Pep est caduque depuis la 2.1 (voir mon commentaire).
Pas entièrement caduque : il présente toujours quelques avantages en terme d'évaluation dynamique que l'on n'a pas avec l'autre approche.
Comme Bruno, je me demande si un behavior pour déterminer le fichier template ne serait pas une bonne chose.
comment:3 Changed 17 years ago by olivier
- Status changed from new to assigned
Wé bon. Par contre l'appel n'est pas bon, on ne passe pas par référence comme ça :)
comment:4 Changed 17 years ago by olivier
Qui plus est, il n'est pas nécessaire de passer $tpl si on appelle le behavior après $_ctx->current_tpl = $tpl, on l'aura dans $_ctx.
comment:5 Changed 16 years ago by bruno
- Owner changed from olivier to bruno
- Status changed from assigned to new

Je suis pas convaincu d'autant que l'exemple de Pep est caduque depuis la 2.1 (voir mon commentaire).
urlHandlerServerDocument permet déjà de modifier le contenu du document avant son envoie (et avant la mise en cache si la priorité est bonne).