aboutsummaryrefslogtreecommitdiff
path: root/doc/todo/replace_HTML::Template_with_Template_Toolkit.mdwn
blob: dfeacbabd741b20f29ef32a069ef993f7e6ac4ba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
[[!tag wishlist]]

HTML::Template is an okay templating kit, but it lacks a lot of powerful
features and thus makes it rather hard to give an ikiwiki site a consistent
look. If you browse the templates provided in the tarball, you'll notice that
more than one of them contain the `<html>` tag, which is unnecessary.

Maybe it's just me, I also find HTML::Template cumbersome to use, due in part
to its use of capital letters.

Finally, the software seems unmaintained: the mailing list and searchable
archives linked from
<http://html-template.sourceforge.net/html_template.html#frequently%20asked%20questions>
are broken and the author has not replied to my query in months.

I would love to see ikiwiki use the [Template
Toolkit](http://template-toolkit.org/) as templating engine.

One major reason for TT is its use of slots, a concept I first encountered
with Zope Page Templates and never wanted to miss it again. Let me quickly
illustrate, using the HTML::Template syntax for simplicity. Traditionally,
templating is done with includes:

    Page A                              Page B
    <TMPL_INCLUDE header>               <TMPL_INCLUDE header>
    this is page A                      this is page B
    <TMPL_INCLUDE footer>               <TMPL_INCLUDE footer>

This involves four pages, and if you mistype "footer" on page B,
it'll be broken in potentially subtle ways.

Now look at the approach with slots:

    MainTemplate
    This is the header
    <TMPL_SLOT content>
    This is the footer

    Page A                              Page B
    <TMPL_USE MainTemplate>             <TMPL_USE MainTemplate>
      <TMPL_FILL content>                 <TMPL_FILL content>  
        This is page A                       This is page B  
      </TMPL_FILL>                        </TMPL_FILL>     
    </TMPL_USE>                         </TMPL_USE>

As soon as you think about more structure pages with various slots
to fill, I am sure you can see the appeal of that approach. If not,
here is some more documentation: <http://wiki.zope.org/ZPT/METALSpecification11>

I would be glad to volunteer time to make this switch happen, such as rewrite
the templates. I'd prefer not having to touch Perl though...


-----

Yes, Template::Toolkit is very powerful. But I think it's somehow overkill for a wiki. HTML::Template can keep things simple, though.  --[weakish](http://weakish.int.eu.org/blog/)