73 lines
3.1 KiB
Markdown
73 lines
3.1 KiB
Markdown
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]]
|