WaBis

walter.bislins.ch

#ALIASPAGE

Wenn in einem Wiki häufig Links auf Titel in anderen Seiten verwendet werden, wird der Wiki-Text unübersichtlich und schwer wartbar. Ein Link sieht zum Beispiel wiefolgt aus:

Link auf einen [[Andere Seite#Ein Titel in der anderen Seite|Titel]] als Beispiel

Schöner wäre folgender Wiki-Text:

Link auf einen [[Titel]] als Beispiel

Das Problem dabei: wie weiss das Wiki, dass Titel auf einer anderen Seite liegt und dort einen Untertitel referenziert?

Die Lösung sind Alias-Seiten:

Alias-Seiten

In einer Alias-Seite können Kürzel definiert werden. Jedes Kürzel verweist auf eine Seite oder einen Untertitel in einer Seite. Im Wiki-Text wird eine Alias-Seite mit folgender Anweisung eingebunden:

#ALIASPAGE Seitenname

Es können beliebig viele Alias-Seiten erstellt und eingebunden werden.

Wird in einer Seite eine Alias-Seite eingebunden, werden alle Links der Seite mit den Kürzeln verglichen, welche in der Alias-Seite definiert sind. Stimmt ein Link mit einem Kürzel überein, wird der Link durch den beim Kürzel stehenden Link ersetzt.

Wenn eine Alias-Seite modifiziert wird, werden alle Seiten, welche diese Alias-Seite referenzieren automatisch nachgeführt.

Aufbau einer Alias-Seite

In der Alias-Seite muss mindestens ein Makro: AliasDef enthalten sein. Die Syntax dieses Makros ist:

{{AliasDef
| Alias-Seite
| Alias-Titel
| :
}}
Alias-Seite: Seiten-Name [ = Alias-Liste ]
Alias-Titel: #Titel [ = Alias-Liste ]
Alias-Liste: Kürzel [* ; Kürzel *]

Beispiel:

{{AliasDef
| Sudoku: Begriffe = Begriff; Sudoku-Begriff
| #Zeilen, Spalten und Boxen = Zeile; Spalte; Box
| Sudoku: Lösungs-Methoden = Methode; Lösungs-Methode
| :
}}

Alias-Titel gehören immer zur nächsten darüber definierten Alias-Seite. Hinter dem = Zeichen sind durch Strichpunkt getrennte Kürzel definiert. Wenn in einem Link ein solches Kürzel steht, wird der Link durch den links davon definierten Text ersetzt.

Beispiele

bla [[Begriff]] bla bla [[Sudoku: Begriffe|Begriff]] bla
bla [[Zeile]] bla bla [[Sudoku: Begriffe#Zeilen, Spalten und Boxen|Zeile]] bla
bla [[Box]]en bla bla [[Sudoku: Begriffe#Zeilen, Spalten und Boxen|Box]]en bla
bla [[Methode]]n bla bla [[Sudoku: Lösungs-Methoden|Methode]]n bla

Verschachtelung

In Alias-Seiten (Wurzel) können rekursiv weitere Alias-Seiten (Unterseiten) mit #ALIASPAGE eingebunden werden. Diese Seiten werden eingelesen, nachdem die Wurzel-Seite mit dem #ALIASPAGE verarbeitet ist. Damit werden die Definitionen der Unterseiten mit niedriger Priorität eingebunden. Das heisst, wenn die selbe Definition sowohl in der Wurzelseite, als auch in einer der Unterseiten vorkommt, verdeckt die Definition der Wurzelseite jene der Unterseite.

Eine Anwendung von Unterseiten ist eine technische Beschreibung von Klassen und Sub-Klassen einer Programmiersprache.

Weitere Verarbeitung

function ResolveAliasLink( aAlias )
  ' aAlias as untrimmed preprocessed link
  dim aliasValue, p, pageName, alias, linkText

  alias = aAlias
  linkText = alias
  ' handle "key=pre<sep>*" -> linkText = "key"; alias = "pre<sep>key"
  p = InStr( alias, "=" )
  if p > 0 then
    linkText = Trim( Left( linkText, p-1 ) )
    alias = Trim( Right( alias, Len(alias)-p ) )
    alias = Replace( alias, "*", linkText )
  end if
  ' handle "key->ref" -> linkText = "key"; alias = "ref.key"
  p = InStr( alias, "&rarr;" )
  if p > 0 then
    linkText = Trim( Left( linkText, p-1 ) )
    alias = Trim( Right( alias, Len(alias)-p-5 ) ) & "." & linkText
  end if
  if AliasExists( Trim(alias), aliasValue ) then
    if aliasValue <> "" then
      p = InStr( aliasValue, "#" )
      if p > 0 then
        pageName = Left( aliasValue, p-1 )
        aliasValue = Right( aliasValue, Len(aliasValue)-p+1 )
        if StrComp( pageName, PAGE_NAME, 1 ) = 0 then pageName = ""
        aliasValue = pageName & aliasValue
      end if
      ResolveAliasLink = aliasValue & "|" & linkText
    else
      ResolveAliasLink = aAlias
    end if
  else
    ResolveAliasLink = aAlias
  end if
end function

More Page Infos / Sitemap
Created Sonntag, 3. März 2013
Scroll to Top of Page
Changed Donnerstag, 2. November 2017