Individuelle Einstellungen pro Gruppe
(weitergeleitet von PmWikiDe.PerGroupCustomizations)
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:
Gruppenspezifische PHP- und CSS-Dateien
- 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 abgearbeitet, nachdem die lokalen Anpassungen in config.php und local.css abgearbeitet 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:
## Einschließen der seiten- oder gruppenweisen lokalen PHP-Skripten $pagename = ResolvePageName($pagename); include_once("$FarmD/scripts/pgcust.php"); $page = PageVar($pagename, '$FullName'); $group = PageVar($pagename, '$Group'); //gruppenweise Anpassungen: if($group=='GroupName') { $RecipeVariable = 'valueA'; etc. ... } //seitenweise Anpassungen: if($page=='GroupName.PageName') { $RecipeVariable = 'valueB'; etc. ... } //include recipe after variables are set: include_once('cookbook/recipescript.php');
Lesen Sie dazu bitte auch Reihenfolge der Befehle in config.php.
Beachten Sie, dass diese Methode nicht dafür benutzt werden kann, die Variable $DefaultPasswords
zu setzen, Sie sollten Gruppen- oder Seitenattribute dafür benutzen, siehe Passwörter und Passwörter verwalten für weitere Informationen.
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 ggf. die 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, können Sie das bewirken, indem Sie in der Datei für die seitenweise Anpassung PHPs include_once()
-Funktion benutzen. Für weitere Informationen siehe Wiki-Kaskaden.
Individuelle CSS-Stile 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.
body { background: #F4C4B4; }
Verhindern von Konfigurationen auf Gruppenebene
Jede Anpassungsdatei kann $EnablePGCust
=0; setzen, um eine spätere 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, können Sie das bewirken, indem Sie in der Datei für die seitenweise Anpassung PHPs include_once()
-Funktion benutzen. Für weitere Informationen siehe Wiki-Kaskaden.
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 Wikifarmen →Begriffserklärung und Installation von Wiki-Farmen
Wenn sie nach verschachtelten Gruppenebenen suchen, sollten Sie dies bedenken: Pm's design considerations on hierarchical groups.
FAQ
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 diese 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 — Rückverweise
Zuletzt geändert: | PmWikiDe.GroupCustomizations | am 22.11.2019 |
PmWiki.GroupCustomizations | am 21.03.2023 |