Lokale Anpassungen

für die Liste aller Seiten

Autoren (Grundlagen)

Ein Administrator des Wikis kann eine Menge Anpassungen vornehmen, indem er einfach Variablen in der local/config.php-Datei setzt und "cascading style sheets" (CSS) in der /pub/css/local.css-Datei definiert. Jede Gruppe oder Seite kann darüber hinaus ihre eigene Konfigurationsdatei und CSS-Konfigurationsdatei haben.

Diese Seite beschreibt, wie Anpassungen im Allgemeinen funktionieren, siehe Dokumentations-Index wegen genauerer Informationen über spezielle Anpassungen, die gewöhnlich bei vielen PmWiki-Installationen durchgeführt werden, einschließlich:

local/config.php

Von Anbeginn an wurde PmWiki so entworfen, dass ein Administrator des Wikis die Art, wie PmWiki Seiten anzeigt und wie die Auszeichnungssequenzen zum Seiten erzeugen genutzt werden, weitgehend anpassen kann. (Das wird sogar ausdrücklich in der PmWiki-Philosophie #4 - gemeinsame Wartung - erwähnt.) Im Ergebnis macht das zentrale pmwiki.php-Skript intensiven Gebrauch von Variablen, um zu bestimmen, wie Auszeichnungssequenzen verarbeitet werden sollen und was jede individuelle Seite ausgibt.

Die einfachste Art der Anpassung ist, eine Variable auf 1 zu setzen (oder auf TRUE). Hier ist ein Beispiel, das ?action=diag- und ?action=phpinfo-Aktionen möglich macht:

Sie können eine Zeile mit einem "#" beginnen (einem Doppelkreuz, auch bekannt als Nummernzeichen, "Fis" oder "Lattenzaun"), um damit einen Kommentar einzuleiten. Außerdem nehmen einige PmWiki-Variablen andere Werte als 1 und 0 (true und false) an. Hier ist ein weiteres Beispiel, das des Wikis Verhalten bezogen auf Suchmaschinenrobotern anpasst (siehe Cookbook:ControllingWebRobots):

# Entferne das standardmäßige "rel='nofollow'"-Attribut für externe Verweise.
$UrlLinkFmt = "<a class='urllink' href='\$LinkUrl' title='\$LinkAlt'>\$LinkText</a>"

Das Unterverzeichnis scripts/ (unter dem Verzeichnis, das pmwiki.php enthält) beinhaltet viele Anpassungen. Das PmWiki-Kochbuch enthält viele Beispiele zu Anpassungen, die Sie in Ihr cookbook/-Unterverzeichnis herunterladen können. Die erste paar Zeilen in jedem Skript enthalten generell Instruktionen, wie die Features des Skripts aktiviert und eingesetzt werden.

Diese Anpassungen werden in Ihre QQconfig.phpQQ-Datei eingefügt. Bei den meisten Skripts reichte es aus

include_once("cookbook/rezeptdatei.php");

und

include_once("scripts/skriptdatei.php");

irgendwo an Ende der Datei config.php unterzubringen, um dessen Funktionen zu aktivieren.

Manche Skripts werden automatisch über die Datei scripts/stdconfig.php aktiviert, solange man nicht $EnableStdConfig=0; in der Datei local/config.php setzt.

Reihenfolge der Befehle in config.php

Die folgende Reihenfolge ist zu empfehlen:

  • definieren Sie $ScriptUrl und $PubDirUrl, wo nötig,
  • definieren Sie eine angepasste PageStore_class wie SQLite, CompressedPageStore oder PerGroupSubDirectories,
  • als Nächstes fügen Sie include_once("scripts/xlpage-utf-8.php") ein,
  • als Nächstes rufen Sie XLPage() auf, das erwartet, dass das definierte (rw) $WikiDir-Verzeichnis schon gesetzt ist, damit XLPage() die Wiki-Seite mit den Übersetzungen auch finden kann,
  • als Nächstes müssen Sie authuser.php einfügen (wenn Sie das einsetzen wollen), weil PmWiki einige Seiten- und Gruppenautorisierungsniveaus zwischenspeichert, wenn auf eine Seite zugegriffen wird,
  • als Nächstes fügen Sie alle anderen Skripten und Rezepte und deren Konfigurationen ein,
    • richten Sie sich nach den Notwendigkeiten und Hinweisen, die Sie den Rezepten finden: manche müssen vor oder nach anderen eingefügt werden, manche Rezepte werden vor, manche nach dem Einfügen konfiguriert.

Wenn Sie Variablen oder Addons für Gruppen, Seiten, per-user-Variablen oder Addons setzen müssen, wird empfohlen, sie in Dateien namens local/Group.php und local/Group.Page.php einzufügen. Wenn Sie es von der config.php-Datei aus machen müssen oder wenn Sie diese Variablen setzen müssen, nachdem die lokalen Dateien eingefügt wurden, nutzen Sie das Folgende am Ende der config.php-Datei:

  $pagename = ResolvePageName($pagename);
  include_once("$FarmD/scripts/pgcust.php");
  list($group, $name) = explode('.', $pagename);
  if ($group != 'Private') ... smiley # tue, was nötig ist
  if (CondAuth($pagename, 'edit')) ... smiley # nur für Editoren

Jegliche direkten Funktionsaufrufe in config.php wie CondAuth(), PageTextVar(), PageVar(), RetrieveAuthPage() oder andere sollten wenn möglich weit zum Ende der config.php-Datei hin nach dem obigen Schnipsel erfolgen. Alternativ können Sie sie in einer eigenen Funktion oder einem eigenen Skript im $PostConfig-Array unterbringen:

  # PmWiki will call this function and include this file after
  #    farmconfig.php, config.php, Group.Page.php and Group.php
  #    but before scripts/stdconfig.php:
  function MyFunction1($pagename) ... smiley
  $PostConfig['MyFunction1'] = 25;               # < 50
  $PostConfig["cookbook/some-addon.php"] = 26;   # < 50

  # PmWiki will call this function and include this file after
  #    farmconfig.php, config.php, Group.Page.php, Group.php
  #    and after scripts/stdconfig.php:
  function MyFunction2($pagename) ... smiley
  $PostConfig['MyFunction2'] = 125;              # >= 50
  $PostConfig["cookbook/other-addon.php"] = 100; # >= 50

Die $PostConfig-Funktionen und -Skripten werden in der Reihenfolge ihrer Werte aufgerufen, d. h. im obigen Beispiel wird "MyFunction2" (125) nach "other-addons.php" (100) aufgerufen. Das erlaubt den Rezeptautoren mehr Kontrolle über die genaue Reihenfolge ihrer Rezepte in Bezug auf andere Rezepte (wenn das wichtig ist).

Beachten Sie, keines dieser Teile ist zwingend notwendig, wenn Sie es aber einsetzen, dann ist dies die empfohlene Reihenfolge in config.php.

Zeichencodierung von config.php

Die Codierung hat einen Effekt, wenn Sie die config.php-Datei speichern. Ihr Editor sollte Ihnen erlauben, die Datei in der Codierung ihres Wikis zu speichern. (Die Voreinstellung von PmWiki ist ISO-8859-1, für neue Wikis wird empfohlen, UTF-8 zu aktivieren.)

Neuere Betriebssysteme wie GNU/Linux, FreeBSD und Apple haben generell die Voreinstellung Unicode/UTF-8 für das Speichern von Dateien. In Windows ist die Voreinstellung für die Codierung ANSI/Windows-1252, was fast das Gleiche wie PmWikis ISO-8859-1 ist.

Die folgenden frei verfügbaren Texteditoren können Dateien in verschieden Codierungen bearbeiten und speichern:

Beachten Sie, dass Sie, wenn Sie UTF-8-Codierung benutzen, die Datei "ohne Byte Order Mark (BOM)" speichern müssen.

Mit der Zeit (seit mindestens Version 2.2.75 der Fall) wird es ein PmWiki-Update geben, das PmWiki mit der Voreinstellung auf die UTF-8-Codierung umstellt, mit der sich alle möglichen Alphabete und Sprachen darstellen lassen. Siehe UTF-8 wegen weiterer Informationen.

pub/css/local.css

Sie können diese Datei anlegen und dort ein paar angepasste CSS-Stile definieren, welche die vom Skin vorgegebenen Stile überschreiben. Zum Beispiel:

  h1, h2, h3, h4, h5 { color: #880000; } /*dunkelrote Titel*/
  a { text-decoration: none; } /* unterstreiche Verweise nicht */

CSS-Dateien werden in der folgenden Reihenfolge eingepflegt

  1. $PubDirUrl/css/local.css – für das ganz Wiki
  2. $PubDirUrl/css/{$Group}.css – für Gruppen
  3. $PubDirUrl/css/{$FullName}.css – für einzelne Seiten
  4. $PageCSSListFmt

Verändern Sie die pmwiki.php-Datei nicht direkt

(auch keine anderen Kerndateien)

Sie sollten unbedingt der Versuchung widerstehen, die Datei pmwiki.php oder die Dateien im Unterverzeichnis scripts/ direkt zu verändern. Jegliche Änderung wird möglicherweise mit dem nächsten Upgrade überschrieben. Stattdessen sollten Sie Ausschau nach Anpassungen halten, die in der Datei config.php durchgeführt werden können. Sie können sogar Ihr eigenes Skript erzeugen und es mit include_once(...) in der config.php einbinden. Wenn Sie eigene Skripten mit Anpassungen erstellen, können Sie diese problemlos im Unterverzeichnis cookbook/ speichern. Dort werden sie bei Upgrades nicht überschrieben. Eventuell möchten Sie auch diese Anpassungen anderen über die pmwiki-users Mailingliste oder das Kochbuch zur Verfügung stellen, so dass auch andere Benutzer davon profitieren können, oder es sogar in eine zukünftige Version von PmWiki einfließen kann.

FAQ

Es gibt gar keine "config.php"-Datei, es ist nicht einmal klar, was eine "lokale Anpassungsdatei" sein soll!

Die "sample-config.php"-Datei im "docs"-Verzeichnis ist als Beispiel mitgeliefert. Kopieren Sie sie in das "local"-Verzeichnis und nennen Sie es in "config.php" um. Sie können dann die "#"-Symbole entfernen oder andere Befehle hinzufügen, die Sie in der Dokumentation gesehen haben. Siehe auch Individuelle Einstellungen pro Gruppe.

Kann ich die Standardseite auf etwas anderes als Main.HomePage ($DefaultPage) einstellen?

Ja, Sie müssen nur die $DefaultPage-Variable auf den Namen der Seite setzen, die Sie als Standard wünschen. Sie könnten auch mal einen Blick auf die $DefaultGroup- und $DefaultName-Konfigurationsvariablen werfen.

$DefaultPage = 'ABC.StartPage';

Beachten Sie die Empfehlungen zu $DefaultName und die Notwendigkeit, auch $PagePathFmt zu setzen, wenn Sie die Standardstartseite für Gruppen ändern.

Wie bekomme ich Zugriff auf den Gruppen- oder Seitennamen in einer Anpassungsdatei (z. B. config.php)?

Benutzen Sie den folgenden Code für pmwiki-2-1-beta21 oder neuer:

## Hole den Gruppen- und den Seitennamen
$pagename = ResolvePageName($pagename);
$page = PageVar($pagename, '$FullName');
$group = PageVar($pagename, '$Group');
$name = PageVar($pagename, '$Name');

Beachten Sie die Wichtigkeit der Reihenfolge der Anpassungen in der config.php-Datei weiter oben, um Probleme mit Zwischengespeichertem zu vermeiden.

Wenn Sie den wortgetreuen Seiten- oder Gruppennamen (vom Seitenaufruf des Browsers) sehr früh in config.php brauchen, ist $pagename garantiert gesetzt auf

  1. den Wert von ?n=, wenn er gesetzt ist, oder
  2. den Wert von ?pagename=, wenn der gesetzt ist, oder
  3. die "path info"-Information aus dem REQUEST_URI (was auch immer hinter dem SCRIPT_NAME folgt), oder
  4. auf einen leeren String.

in Übereinstimmung mit diesem Posting.

Kann ich etwas aus meinem wikilib.d/-Verzeichnis löschen?

Die Dateien mit den Namen Site.* und SiteAdmin.* enthalten Teile des Interfaces und der Konfiguration und sie sollten nicht entfernt werden. Die anderen Dateien namens PmWiki* oder z. B. PmWikiDe* enthalten die Dokumentation und können entfernt werden.

Wie passe ich meine eigene Fehler-404-Seite für nicht vorhandene Seiten an?

Um den Text der Nachricht zu ändern, bearbeiten Sie die Seite Site.PageNotFound.

Wenn Sie Ihre Site auf eine deutsche Oberfläche umgestellt haben (→ Internationalisierungen), wird die Seite PmWikiDe.PageNotFound statt dessen eingeblendet. Sie sollten dann also diese Seite bearbeiten.

Ist die Reihenfolge der Einträge in der config.php-Datei wichtig? Gibt es gewisse Dinge, die vor oder hinter anderen in dieser Datei kommen müssen?

Ja, siehe Reihenfolge der Anpassungen in config.php oben.

Ich habe ein online gehostetes Wiki und eine lokale Kopie davon auf meinem heimischen Rechner. Wie kann ich in der config.php-Datei unterscheiden, ob ich online bin oder auf dem lokalen Rechner? Ich möchte die config.php-Datei nicht zweimal pflegen müssen.

Sie können eventuell das Folgende probieren:

if($_SERVER['SERVER_ADDR'] == '127.0.0.1') {
  # Home wiki

}
else {
  # Online wiki

}

Sie können $EnableDiag = 1; in die config.php-Datei für beide Server einfügen und ?action=diag ansehen.

Die $_SERVER-Variable hat auf verschiedenen Servern auch verschiedene Werte, insbesondere 'SERVER_ADDR' oder 'SERVER_NAME'. Sie können die verschiedenen Wikis auf der Basis der verschiedenen Werte konfigurieren.

für die Liste aller Seiten


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

Zuletzt geändert:   PmWikiDe.LocalCustomizationsam 13.03.2023
 PmWiki.LocalCustomizationsam 12.03.2023