Judo-Wiki des Chemnitzer WSV
PmWikiDe

Kategorien

für die Liste aller Seiten

Autoren (Grundlagen und Fortgeschritten)

Zweck von Kategorien

Kategorien? (auch als "tags" bekannt) bieten die Möglichkeit, verwandte Seiten zu organisieren und zu finden. Kategorien sind standardmäßig in PmWiki 2 eingebaut. In den meisten Wikis erfordern sie keinen speziellen Code. Sie sind einfach eine nützliche Konvention. Die Idee ist, dass jede Seite, die in einen bestimmten Bereich fällt, einen Link zu einer gemeinsamen Seite haben sollte. Auf dieser Seite erhält man dann die Liste aller Seiten, die dorthin verweisen. Diese Seiten werden in der Category-Gruppe erstellt, darum werden diese Bereiche Kategorien (Categories) genannt.

Kategorien verwenden

Kategorien werden in einem einzigen Schritt erstellt: Links zur Kategorie hinzuzufügen. Die Kategorie Subjekt wird erstellt, indem auf einigen Seiten ein Link zu Category.Subjekt hinzugefügt wird. Wenn der Link einer Seite hinzugefügt wurde, kann sie als Teil der Kategorie Subjekt betrachtet werden.

Es gibt eine spezielle Auszeichnung für solche Links, die das Arbeiten mit Kategorien noch einfacher gestaltet: [[!Subjekt]] erstellt einen Link auf Category.Subjekt. [[!Subjekt]] ist also eine Art Shortcut zur Seite Subjekt in der Category-Gruppe.

In dem Release von PmWiki ist eine Category.GroupFooter-Seite enthalten, die die Zeile

(:pagelist link=Category.{$*Name} list=normal:)

enthält. Dadurch wird in jeder angezeigten Kategorieseite eine Liste von Links erscheinen, die diese Seite in der Kategoriegruppe referenzieren. Diese Seite lässt sich aber, wie jede Seite in wikilib.d/, bei Bedarf ändern, ohne dass sie durch ein neues Release überschrieben würde.

Diese Liste kann natürlich genauso gut im Header erstellt werden, aber in der Regel wird man einen Beschreibung der jeweiligen Kategorie vor der Seitenliste einfügen wollen.

Da die normale Seitenlisten-"link="-Auszeichnung verwendet wird, ist sie nicht nur in der Category-Gruppe zu verwenden. Sollen alle Seiten angezeigt werden, die der Kategorie Subjekt zugeordnet sind, kann auf jeder beliebigen Wiki-Seite (:pagelist link=Category.Subjekt list=normal:) verwendet werden.

Ebenso ist es nicht notwendig, dass eine "Category-Seite" sich in einer "Category-Gruppe" befinden muss - jede Seite kann eine Kategorie für Seiten definieren, die mit ihr in Verbindung stehen.

Der Administrator kann der Category-Gruppe auch einen anderen Namen zuordnen, indem er der Variable $CategoryGroup in der config.php einen anderen Gruppennamen zuweist. (Normalerweise sollte eine Änderung wie diese in der Installationsphase vorgenommen werden. Eine solche Änderung in einem laufenden Wiki kann Probleme mit Seitenlisten hervorrufen, es sei denn, alle Seiten mit einer Kategorie werden erneut gespeichert.)

Der Autor einer Seite kann auf eine Kategorieliste verweisen, ohne die verweisende Seite in die Kategorieliste aufzunehmen, indem er [[ {Category.Subject$PageUrl} | Subject ]] benutzt. Das erzeugt einen Link, der wie [[!Subject]] aussieht, ohne die verlinkende Seite zur Kategorieliste hinzuzufügen.

Zusammenfassung

Durch das Hinzufügen eines Links [[!Subjekt]] wird in der Seite Category.Subjekt automatisch ein Link auf diese Seite erscheinen, vorausgesetzt, Category.GroupFooter ist passend angehübscht.

So können Sie allen Seiten mit Filmkritiken einen Link [[!Filme]] hinzufügen, um eine automatische, alphabetisch geordnete Liste mit Filmkritiken anzulegen. Von jeder dieser Seiten gelangen Sie mit einem Klick auf den Link zu der Seite Category.Filme, wo diese Seiten automatisch aufgelistet werden.

Autoren (Fortgeschritten)

Verschachtelung von Kategorien

Kategorien haben noch größeres Potential, denn Category.*-Seiten können selbst in Kategorien enthalten sein! Hier ein hervorragendes Beispiel von John Rankin, gegeben seien drei Filme, die jeweils verschiedenen Genres und Jahren zugeordnet sind:

Film.ShaunOfTheDead   [[!Horror]] [[!Comedy]] [[!2003]]
Film.InMyFathersDen   [[!Drama]] [[!2004]]
Film.TheCorporation   [[!Documentary]] [[!2003]]

Jetzt können wir die Kategorien Category.Horror, Category.Comedy, Category.Drama, und Category.Documentary erstellen, und in jeder dieser Seiten verlinken wir nach [[!Genre]]. In Category.2003 und Category.2004 fügen wir einen Link zur Kategorie [[!Year]] ein.

Was passiert, wenn wir die Kategorie Category.Genre anzeigen? Wir erhalten Links zu "Comedy", "Drama", "Documentary" und "Horror", Weil sie in der Kategorie "Genre" enthalten sind. Wenn wir einem dieser Links folgen, sehen wir alle Filme dieser Kategorie. Ebenso sehen wir Links zu "2003" und "2004", wenn wir Category.Year anklicken, und dort jeweils die Liste der Filme aus diesem Jahr.

Schließlich können wir in Category.Genre und Category.Year einen Link nach [[!Category]] einfügen, der sie zu "Top-Level" Kategorien macht, die von der Seite Category.Category erreichbar sind. Damit haben wir schon diese Hierarchie:

Category.Category
    Category.Genre
        Category.Comedy
            Film.ShaunOfTheDead
        Category.Drama
            Film.InMyFathersDen
        Category.Documentary
            Film.TheCorporation
        Category.Horror
            Film.ShaunOfTheDead
    Category.Year
        Category.2003
            Film.ShaunOfTheDead
            Film.TheCorporation
        Category.2004
            Film.InMyFathersDen

Beachten Sie, dass das keine "zwingende" Hierarchie ist - jede Seite oder Kategorie kann zugleich in mehreren Kategorien erscheinen. Zum Beispiel kann Category.Documentary sowohl in der Genre- als auch der "Top-Level"-Kategorie enthalten sein.

Auf jeder Kategorieseite kann vor der eigentlichen Liste ein beschreibender Text stehen. Dort ist vielleicht auch ein Verweis auf andere Seiten oder Kategorien sinnvoll ("siehe auch..."). Zum Beispiel könnte in einem Tourismus-Wiki in der "bed and breakfast"-Kategorie ein Verweis auf die "Selbstverpflegung"-Kategorie stehen.

Administratoren

Die "Innereien" der Kategorie-Auszeichnung

Wie schon erwähnt, sind alle nötigen Voraussetzungen für das Kategorie-Markup in aktuellen PmWiki-Versionen enthalten. Hier die Funktionsweise für den Interessierten. Die Verwendung der Gruppe "Category" als Aufbewahrungsort für alle Kategorien ist durch die Variable $CategoryGroup vorgegeben, und die spezielle [[!Subjekt]]-Auszeichnung wird durch einen Aufruf der folgenden Markup()-Funktion aktiviert:

SDV($CategoryGroup,'Category');
Markup('[[!','<links','/\[\[!([^\|\]] ?)\]\]/',
  "<span class='category'>[[$CategoryGroup/$1]]</span>");

Eine gute Einteilung

Der schwierige Teil bei der Verwendung von Kategorien ist die Auswahl treffender Bezeichnungen. Ein Verwalter möchte sich vielleicht nach den Normen DIN 1463-1 bzw. dem internationalen Äquivalent ISO 2788 für einsprachige oder ISO 5964 für mehrsprachige Thesauri richten.

Zu klärende Fragen sind beispielsweise:

  • Kann ein existierendes Schema wiederverwendet werden
  • Anzahl der Hierarchien (nicht zu flach / zu tief, z.B. 3)
  • Anzahl der Kategorien pro Seite (nicht zu viel / wenig - z.B. 3)
  • Durchgängige Verwendung von Einzahl- ([[Merkur]] ist ein [[!Planet]]) oder Mehrzahlformen ([[Merkur]] ist in der [[!Planeten]]-Kategorie)
  • Begriffsklärungen und Benutzung von Phrasen ([[!Musikinstrumente]] und [[!Medizinische Instrumente]]) oder Cookbook:Subpage Markup ([[!Instrumente*Musik]] und [[!Instrumente*Medizin]])

Oder Sie können die Benutzer die Kategoriebezeichnungen verwenden lassen, die sie für aussagekräftig halten. Mit der Zeit wird sich von selbst eine Terminologie ("Folksonomy") bilden.

Anzeigen einer Liste von Kategorien

Um eine Liste von Kategorien anzuzeigen, können wir eine Seitenliste für die Seiten in der Kategorie erzeugen. Zum Beispiel listet das Folgende die Seiten in der Kategoriegruppe auf, setzen Sie es der Einfachheit halber in die Seite Category.Category oder in eine andere Gruppe:

(:pagelist group=Category list=normal fmt=#title:)

Aber es gibt ein Problem: Nur das Einfügen eines Kategoriemarkups in eine Seite allein erzeugt noch keine korrespondierende Kategorieseite, obwohl das Folgen des Links eine Seite mit Links auf alle Seiten zeigt, die darauf verweisen!
Um Kategorieseiten automatisch in der Gruppe 'Category' erstellen zu lassen, fügen Sie das Folgende in die config.php-Datei ein:

$AutoCreate['/^Category\./'] = array('ctime' => $Now, 'text' => $page['text']);

Ändern Sie 'Category' auf den Namen Ihrer Kategoriegruppe. Sie können auch mehr Definitionen für weitere Kategoriegruppen einfügen, nützlich, wenn Sie ein Rezept wie Cookbook:Tagger benutzen, das mehrere Kategoriegruppen erlaubt.

Verlinken = Kategorisieren

Beachten Sie, dass das Kategorisieren einer Seite (mit einem [[!category markup]]) nicht unterschieden werden kann von einem Referenzieren oder Verlinken auf eine Kategorie (mit einem [[link markup]]), d. h. Seiten, die eine Kategorie referenzieren, werden Teil dieser Kategorie. Das ist der Gegenstand einer lange ausstehenden Bitte um ein Feature, das schwer zu implementieren scheint, ohne andere Funktionalitäten zu brechen.

Siehe auch EditVariables#AutoCreate und Konzept - Konzepte und Terme für die Liste aller Seiten


Übersetzung von PmWiki.Categories,   Originalseite auf PmWikiDe.Categories   —   Rückverweise

Zuletzt geändert:   PmWikiDe.Categoriesam 06.07.2016
 PmWiki.Categoriesam 30.08.2019