Individuelle Einstellungen pro Gruppe

Administratoren (FTP)

Einer der Zwecke von Wikigruppen ist, einem Administrator des Wikis die Möglichkeit zu geben, die Besonderheiten von PmWiki auf einer per-Gruppen-Basis anzupassen. So kommt die Anpassung pro Gruppe ins Spiel:

  • Das local/-Unterverzeichnis (typischerweise in $FarmD) wird benutzt, um lokale Konfigurationen zu speichern.
  • Das pub/css/-Unterverzeichnis (typischerweise in $FarmD) wird benutzt, um lokale CSS-Dateien zu speichern.

Um eine lokale Anpassung für eine bestimmte Gruppe durchzuführen,

  • fügen Sie eine Anpassungsdatei namens "<gruppenname>.php" in das local/-Unterverzeichnis ein, wobei <gruppenname> durch den wirklichen Namen der Gruppe von Seiten zu ersetzten ist, und
  • fügen Sie die CSS-Anpassung als Datei namens "<gruppenname>.css" in das pub/css/-Unterverzeichnis ein, wobei <gruppenname> durch den wirklichen Namen der Gruppe von Seiten zu ersetzten ist.

Diese Dateien werden automatisch bearbeitet, nachdem die lokalen Anpassungen in config.php und local.css bearbeitet wurden.

Um beispielsweise das Bild zu ersetzen, das in der oberen, linken Ecke der "GruppenName"-Seiten erscheint, kann man eine local/GruppenName.php-Datei erzeugen mit folgendem Inhalt:

<?php
  $PageLogoUrl = "/meinebilder/schach.gif";

Das Beispiel hat den Effekt, dass alle Seite in der GruppenName-Wikigruppe das Bild "/meinebilder/schach.gif" als Logo anstelle des Standardlogos einsetzen.

Für das Hinzufügen von Auszeichnungen oberhalb oder unterhalb des Textes siehe Kopfbereich (und Fußbereich) der Gruppe.

Individuelle Anpassungen pro Seite

PmWiki erlaubt auch die Anpassungen für einzelne Seiten. Benutzen Sie einfach den kompletten Seitennamen der anzupassenden Seite anstelle des Gruppennamen. Beispielsweise kann man eine Datei local/Schach.HomePage.php nutzen, um lokale Anpassungen für die Seite Schach.HomePage zu machen.

Nahezu jede Anpassung, die man in die config.php setzen würde, kann man auch für gruppen- oder seitenweise Anpassungen nutzen.

Eine wichtige Ausnahme dazu ist, gruppen- oder seitenweise Anpassungen für Rezept-Skripten zu setzen, die in der config.php eingefügt wurden. Die meisten Rezepte müssen ihre Anpassungs-Variablen gesetzt bekommen, bevor das Skript eingefügt wird. Statt eine gruppen- oder seitenweise Anpassungs-PHP-Datei zu benutzen, setzt man eine bedingte Anweisung in die config.php, bevor man das Rezeptskript einfügt. Beispiel:

$page = PageVar($pagename, '$FullName');
$group = PageVar($pagename, '$Group');
//per-group customizations:
if($group=='GroupName') {
   $RecipeVariable = 'valueA';
   etc. ...
}
//per-page customizations:
if($page=='GroupName.PageName) {
   $RecipeVariable = 'valueB';
   etc. ...
}
//include recipe after variables are set:
include_once('cookbook/recipescript.php');

Bearbeitungsreihenfolge

Für alle Anpassungen bearbeitet PmWiki zuerst die local/config.php. Dann sieht es im local/-Unterverzeichnis nach, ob es eine Datei für seitenweise Anpassungen gibt und lädt sie ggf., danach für gruppenweise Anpassungen. Wenn es keine der beiden Dateien gibt, lädt PmWiki local/default.php. Wenn es für eine seitenweise Anpassung nötig ist, dass die gruppenweise Anpassung zuerst geladen wird, kann sie das selbst bewirken, indem sie PHPs include_once()-Funktion benutzt. Für weitere Informationen siehe Wiki-Kaskaden.

Individuelle CCS-Anpassungen für Gruppen oder Seiten

Um CSS-Stile auf Seiten einer bestimmten Gruppe namens GruppenName anzuwenden, erzeugt man eine Datei namens GruppenName.css im pub/css/-Verzeichnis und füllt diese Datei mit den zusätzlichen Stilregeln. Um Stile auf eine bestimmte Seite anzuwenden, erzeugt man eine Datei in diesem Verzeichnis namens GruppenName.SeitenName.css mit den gewünschten CSS-Stilen. Alle CSS-Regeln, die auf alle Wikiseiten angewendet werden sollen, fügt man in die Datei pub/css/local.css ein.

/pub/css/GroupName.css:

  body { background: #F4C4B4; }

Verhindern von Konfigurationen auf Gruppenebene

Jede Anpassungsdatei kann $EnablePGCust=0; setzen, um später die automatische Ausführung einer Seiten-/Gruppen-/Standard-Anpassung zu verhindern. Wenn es für eine seitenweise Anpassung nötig ist, dass die gruppenweise Anpassung zuerst geladen wird, kann sie das selbst bewirken, indem sie PHPs include_once()-Funktion benutzt. Für weitere Informationen siehe wiki cascades.

Authentifikation

Alle Passwörter für eine Gruppe sollten in den Gruppenattributen der Gruppeseite gesetzt werden (siehe Passwortadministration), nicht in einer Gruppen-Anpassungsdatei.

Wikifarmen berücksichtigen

Wikigruppen sind ein leichter Weg, mehrere Sites in einer einzigen Wikiinstallation zu beherbergen, indem man jeder Site eine eigenen Gruppe gibt. Ein anderer Weg ist, Wikifarmen zu nutzen. Das erlaubt jeder Site, einen eigenen Satz von Wikigruppen und lokalen Anpassungsdateien zu haben. Mehr dazu in WikifarmenRunning multiple wikis from a single installation

Wenn sie nach verschachtelten Gruppenebenen suchen, sollten Sie dies bedenken: Pm's design considerations on hierarchical groups.

Wie kann ich CSS-Stile auf bestimmte Gruppen oder Seiten anwenden?

Erzeugen Sie einfach eine pub/css/Group.css- oder pub/css/Group.Page.css-Datei, die die angepassten Stildefinitionen für diese Gruppe oder Seite enthält.

Warum sollten Passwörter nicht in Gruppen- oder Seitenanpassungsdateien gesetzt werden?

Der Grund für diesen Ratschlag ist, dass Gruppenanpassungsdateien nur für die angezeigte Seite geladen wird. Wenn also $DefaultPasswords['read'] in local/GruppeA.php gesetzt wird, kann jemand eine andere Seite benutzen, um den Inhalt von Seiten der GruppeA einzusehen. Zum Beispiel könnte er in 'Main.WikiSandbox'

(:include GruppeA.EineSeite:)

einfügen. Weil nun die GruppeA.php-Datei nicht geladen wird (er hat ja die Seite Main.WikiSandbox → local/Main.php aufgerufen), wird kein Lesepasswort gesetzt.

Das gleiche gilt natürlich entsprechend für Seitenapassungsdateien.

Ist die Abarbeitungsreihenfolge nicht befremdlich. Warum wird die Seitenkonfiguration nicht am Schluss geladen (also nach der globalen und der Gruppenkonfiguration)?

Was wir oft wollen, ist einer Gruppe von Seiten bestimmte Fähigkeiten zu geben, aber diese Fähigkeiten für eine bestimmte Seite zu unterbinden, als seien die nie eingerichtet worden. Wenn die Gruppenkonfigurationsdatei zuerst bearbeitet wird, wird es sehr mühsam/weitschweifig für die Seitenkonfigurationsdatei, die Effekte der vorigen Datei ungeschehen zu machen. Deshalb laden wir die Seiten- vor der Gruppendatei.

Wenn eine Seitenkonfiguration darauf angewiesen ist, dass die Gruppenkonfiguration zuerst geladen wird, kann sie dem Rezept oben folgen (indem sie PHPs include_once()-Funktion benutzt) oder $EnablePGCust = 0 setzen.


Übersetzung von PmWiki.GroupCustomizations Originalseite auf PmWikiDe.GroupCustomizations - Backlinks
Zuletzt geändert:
PmWikiDe.GroupCustomizations am 26.09.2014
PmWiki.GroupCustomizations am 16.07.2022