NAME
HTML::Template::Pluggable - Extends HTML::Template with plugin support
SYNOPSIS
Just use this module instead of HTML::Template, then use any plugins,
and go on with life.
use HTML::Template::Pluggable;
use HTML::Template::Plugin::Dot;
# Everything works the same, except for functionality that plugins add.
my $t = HTML::Template::Pluggable->new();
THE GOAL
Ideally we'd like to see this functionality merged into HTML::Template,
and turn this into a null sub-class.
STATUS
The design of the plugin system is still in progress. Right now we have
just one trigger in param. The name and function of this may change, and
we would like to add triggers in new() and output() when the need
arises.
All we promise for now is to keep HTML::Template::Plugin::Dot
compatible. Please get in touch if you have suggestions with feedback on
designing the plugin system if you would like to contribute.
WRITING PLUGINS
HTML::Template offers a plugin system which allows developers to extend
the functionality in significant ways without creating a creating a
sub-class, which might be impossible to use in combination with another
sub-class extension.
Currently, one trigger has been made available to alter how the values
of TMPL_VARs are set. If more hooks are needed to implement your own
plugin idea, it may be feasible to add them-- check the FAQ then ask
about it on the list.
Class::Trigger is used to provide plugins. Basically, you can just:
HTML::Template->add_trigger('pre_param', \&trigger);
A good place to add one is in your plugin's "import" subroutine:
package HTML::Template::Plugin::MyPlugin;
use base 'Exporter';
sub import {
HTML::Template->add_trigger('pre_param', \&dot_notation);
goto &Exporter::import;
}
pre_param trigger
# in a Plugin's import() routine.
HTML::Template->add_trigger('pre_param', \&_set_tmpl_var_with_dot );
This sets a callback that is executed in param() with all of the same
arguments. It is only useful for altering how /setting/ params works.
The logic to read a param is unaffected.
It can set any TMPL_VAR values before the normal param logic kicks in.
To do this, "$self-"{param_map}> is modified as can be seen from source
in HTML::Template::param(). However, it must obey the following
convention of setting $self->{param_map_done}{$param_name} for each
param that is set. $param_name would be a key from "$self-"{param_map}>.
This notifies the other plugins and the core param() routine to skip
trying to set this value. $self->{param_map_done} is reset with each
call to param(), so that like with a hash, you have the option to reset
a param later with the same name.
SEE ALSO
o HTML::Template::Plugin::Dot - Add Template Toolkit's magic dot
notation to HTML::Template.
AUTHOR
Mark Stosberg, ""
BUGS
Please report any bugs or feature requests to
"bug-html-template-pluggable@rt.cpan.org", or through the web interface
at . I will be notified, and then you'll
automatically be notified of progress on your bug as I make changes.
Copyright & License
Copyright 2005 Mark Stosberg, All Rights Reserved.
This program is free software; you can redistribute it and/or modify it
under the same terms as Perl itself.