]> sipb.mit.edu Git - ikiwiki.git/blobdiff - doc/todo/varioki_--_add_template_variables___40__with_closures_for_values__41___in_ikiwiki.setup.mdwn
response
[ikiwiki.git] / doc / todo / varioki_--_add_template_variables___40__with_closures_for_values__41___in_ikiwiki.setup.mdwn
index 9b3e015a531fcd0d894fcd3acabb49b0a7686a05..492a32b366a53c194e7effe393f831752ea0445e 100644 (file)
@@ -15,16 +15,47 @@ ManojSrivastava
 
 > I think you could now implement "toplvl" using [[conditionals|/plugins/conditional]]:
 >
->     \[[if test="destpage(/index)" then="""...""" else="""..."""]]
+>     \[[!if test="destpage(/index)" then="""...""" else="""..."""]]
 >
 > --[[JoshTriplett]]
 
+> > Right. But how about some more complex stuff, for example, from my varioki settings below? --ManojSrivastava
+
 > Here's a dump of the file Manoj sent me, for reference.
 > 
 > My take on this is that simple plugins can do the same sort of things, this is
 > kind of wanting to avoid the plugin mechanism and just use templates and
 > stuff in the config file. Not too thrilled about that. --[[Joey]]
 
+> > OK. How do you implement something like category I have in my varioki
+> >  settings? As a user, I can just add new stuff to my config and my template;
+> >  with a plugin I'll have to write a plugin, and install it in the ikiwiki plugin
+> > directory,  which is not very easy for a plain ol' user.  Not everyone is the
+> >  sysadmin of their own machines with access to system dirs. --ManojSrivastava
+
+<pre>
+                varioki => {'motto'    => '"Manoj\'s musings"',
+                        'arrayvar' => '[0, 1, 2, 3]',
+                        'hashvar'  => '{1, 1, 2, 2}',
+                        'toplvl'   => 'sub {return $page eq "index"}',
+                        'isblog'   => 'sub {return $page =~ m,blog/.*,}',
+                        'category' => 'sub { return " " unless $page=~ m,^blog/,; my  $p=""; my $i="&lt;a href=\"$config{url}/blog\"&gt;Top::&lt;/a&gt;"; my @a=split ("/",$page); shift @a; pop @a; foreach my $dir (@a) { $p.=$dir; $i.="&lt;a href=\"$config{url}/tag/$p\"&gt;$dir&lt;/a&lt;::"; $p.="/"; }; return $i }',
+                        'date'     => 'sub { return POSIX::strftime("%d", gmtime((stat(srcfile($pagesources{$page})))[9])); }',
+                        'year'     => 'sub { return POSIX::strftime("%Y", gmtime((stat(srcfile($pagesources{$page})))[9])); }',
+                        'month'    => 'sub { return POSIX::strftime("%B", gmtime((stat(srcfile($pagesources{$page})))[9])); }',
+                       'day'      => 'sub { return POSIX::strftime("%A", gmtime((stat(srcfile($pagesources{$page})))[9])); }',
+                      },
+</pre>
+
+> > I'd argue in favour of this plugin; it's true that a simple plugin can be
+> > used to set a template variable, but that makes it necessary to write a new
+> > plugin for every variable (or set of variables) that are needed. In that
+> > kind of situation, I don't think bypassing the plugin mechanism is a bad
+> > thing, unless an ever-growing collection of plugins to set one or two
+> > variables is a good thing.
+> >
+> > --[[bma]]
+
 ----
 
 <pre>
@@ -232,4 +263,4 @@ ManojSrivastava
 +
 </pre>
 
-[[tag patch]]
+[[!tag patch]]