diff options
Diffstat (limited to 'doc/todo/alias_directive.mdwn')
-rw-r--r-- | doc/todo/alias_directive.mdwn | 72 |
1 files changed, 72 insertions, 0 deletions
diff --git a/doc/todo/alias_directive.mdwn b/doc/todo/alias_directive.mdwn new file mode 100644 index 000000000..71a2efc76 --- /dev/null +++ b/doc/todo/alias_directive.mdwn @@ -0,0 +1,72 @@ +An alias directive could work like an inverse redirect, but in a more +maintainable way. Currently, a page might have several redirects leading to it, +without an easy way of enumerating them. Therefore, the following directive is +suggested for addition (possibly by means of a plugin): + +> The `alias` and `aliastext` directives implicitly create +> redirect pages to the page they are used on. If two or more pages claim a +> non-existing page to be an alias, a disambiguation page will automatically +> generated. If an existing page is claimed as an alias, it will be prefixed +> with a note that its topic is also an alias for other pages. +> +> All aliases to a page are automatically listed below the backlink and tag +> lists at the bottom of a page by default. This can be configured globally by +> setting the `alias_list` configuration option to `false`, or set explicitly +> per alias by specifying `list=true` or `list=false`. +> +> Similar to the `taglink` directive, `aliastext` produces the alias name as +> well as registering it. +> +> ## Usage example +> +> `Greece.mdwn`: +> +> > Greece, also known as \[[!aliastext Hellas]] and officially the +> > \[[!aliastext "Hellenic Republic"]], is a … +> > +> > <!-- there are so many people who misspell this, let's create a redirect --> +> > \[[!alias Grece list=false]] +> +> This page by itself will redirect from the "Hellas", "Hellenic Republic" and +> "Grece" pages as if they both contained just: +> +> > \[[!meta redir="Greece"]] +> +> If, on the other hand, `Hellas Planitia` also claims `[[!alias Hellas]]`, the +> Hellas page will look like this: +> +> > **Hellas** is an alias for the following pages: +> > +> > * \[[Greece]] +> > * \[[Hellas Planitia]] + +The proposed plugin/directive could be extended, eg. by also including +old-style redirects in the alias list, but that might introduce unwanted +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]] |