connection between alias direcive and autotag

master
chrysn 2010-09-23 13:09:05 +02:00
parent fc296d49a0
commit abea37a67a
2 changed files with 40 additions and 2 deletions

View File

@ -27,8 +27,8 @@ suggested for addition (possibly by means of a plugin):
> > <!-- there are so many people who misspell this, let's create a redirect --> > > <!-- there are so many people who misspell this, let's create a redirect -->
> > \[[!alias Grece list=false]] > > \[[!alias Grece list=false]]
> >
> This page by itself will redirect from the "Hellas" and "Hellenic Republic" > This page by itself will redirect from the "Hellas", "Hellenic Republic" and
> pages as if they both contained just: > "Grece" pages as if they both contained just:
> >
> > \[[!meta redir="Greece"]] > > \[[!meta redir="Greece"]]
> >
@ -44,4 +44,29 @@ The proposed plugin/directive could be extended, eg. by also including
old-style redirects in the alias list, but that might introduce unwanted old-style redirects in the alias list, but that might introduce unwanted
coupling with the meta directive. coupling with the meta directive.
-----------------
On second thought, implementing this might have similarities with
[[todo/auto-create tag pages according to a template]] -- the auto-created
pages would, if the way of the alias directive is followed, not create physical
files, though, but be created just when someone edits them.
If multiple plugins do such a trick, they would have to fight over who comes
first. If, for example, we have a setup where not yet created tag pages are
automatically generated as "\[[!inline pages="link(<TMPL_VAR TAG>)"
archive="yes"]]" and aliases are enabled, and a non-tag pages grabs a tag as an
alias (as to redirect all taglinks of the tag to itself), there are two
possibilities:
* The autotag plugin comes first:
* autotag sees the missing tag and creates its "\[[!inline" stuff
* alias sees that there is already content and adds its prefix
* The alias plugin comes first (this is the prefered way):
* alias sees the empty page, sees it is not contested by other alias
directives and creates its "\[[!meta" redirect
* autotag sees there is already content and doesn't do anything
That issue could be handled with "priority number" on the hook, with plugins
with a lower number being called first.
[[!tag wishlist]] [[!tag wishlist]]

View File

@ -248,4 +248,17 @@ I've tested it fairly thouroughly. --[[Joey]]
[a358d74bef51dae31332ff27e897fe04834571e6]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=a358d74bef51dae31332ff27e897fe04834571e6 (commitdiff for a358d74bef51dae31332ff27e897fe04834571e6) [a358d74bef51dae31332ff27e897fe04834571e6]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=a358d74bef51dae31332ff27e897fe04834571e6 (commitdiff for a358d74bef51dae31332ff27e897fe04834571e6)
[981400177d68a279f485727be3f013e68f0bf691]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=981400177d68a279f485727be3f013e68f0bf691 (commitdiff for 981400177d68a279f485727be3f013e68f0bf691) [981400177d68a279f485727be3f013e68f0bf691]: http://git.liegesta.at/?p=ikiwiki.git;a=commitdiff;h=981400177d68a279f485727be3f013e68f0bf691 (commitdiff for 981400177d68a279f485727be3f013e68f0bf691)
-------------------
Even if this is already marked as done, I'd like to suggest an alternative
solution:
Instead of creating a file that gets checked in into the RCS, the source files
could be left out and the output files be written as long as there is no
physical source file (think of a virtual underlay). Something similar would be
required to implement [[todo/alias directive]], which couldn't be easily done
by writing to the RCS as the page's contents can change depending on which
other pages claim it as an alias. --[[chrysn]]
[[!tag done]] [[!tag done]]