Consider the "All files in this package search" on The URL for such a search looks like this:

To create a "debfiles" shortcut that takes a package name, you could just hardcode the architecture and distribution:

[[!shortcut  name=debfiles url=""]]
[[!debfiles  ikiwiki]]

But what if you could have them as optional parameters instead? The syntax for the invocation should look like this:

[[!debfiles  ikiwiki dist=testing]]

Some possible syntax choices for the shortcut definition:

[[!shortcut  name=debfiles url="" dist="unstable" arch="i386"]]
[[!shortcut  name=debfiles url=""]]
[[!shortcut  name=debfiles url="{dist=unstable}&arch=%{arch=i386}"]]
[[!shortcut  name=debfiles url="$*&searchmode=filelist&case=insensitive&version=${dist=unstable}&arch=${arch=i386}"]]


Well, you can already do this kind of thing with templates. Invocation does look different:

[[!template  id=debfiles package=ikiwiki dist=testing]]


I think I would find templates sufficient, if:

  1. I could use the name of the template as a preprocessor directive ([[!templatename ...]]), rather than using the template directive with an id argument ([[!template id=templatename]]).
  2. Template invocation allowed bare values in addition to key=value arguments, and template definition supported some means to access the value. This would allow [[!debfiles ikiwiki]] rather than [[!debfiles package=ikiwiki]].
  3. I could use ikiwiki syntax in the template, not just HTML and HTML::Template. (If I can already do that, then template should make that more clear.)