iris palandt
Recent Changes (all)

FAQ

für die Liste aller Seiten

Autoren, Administratoren

< Beantwortete Fragen | Dokumentations-Index | FAQ-Kandidaten >

Diese Seite ist bestrebt, einige der gewöhnlich auftretenden Fragen zu sammeln. Die Antworten sind in den korrespondierenden Seiten zu finden (siehe Verweise). Wenn Sie eine Frage haben, die hier nicht beantwortet wird, können Sie ihre Frage (auf englisch) in der Seite Questions loswerden, oder suchen Sie nach Dokumentationen mit Hilfe der Suchseite. Weitere Dokumentationen finden sich im Dokumentations-Index.

Einführung

Was ist PmWiki?

PmWiki ist ein wiki-basiertes System für kooperative Erzeugung und Pflege von Webseiten. Siehe PmWikiDe.

Was kann ich damit tun?

PmWiki-Seiten funktionieren und sehen aus wie normale Webseiten, außer dass sie einen 'Bearbeiten'-Knopf haben, der es einfach macht, existierende Seiten zu ändern und neue Seiten in die Website einzufügen, indem man Basisschreibregeln benutzt. Sie müssen nichts über HTML oder CSS wissen. Das Schreiben der Seiten kann frei für die Öffentlichkeit sein oder auf eine kleine Gruppe von Autoren beschränkt werden. Fühlen Sie sich frei, Grundlegende Textformatierungsregeln in der "Sandkiste" auszuprobieren. Die Website, die Sie gerade ansehen, wird mit PmWiki geschaffen und gepflegt.

Welche Voraussetzungen gibt es?

Sehen Sie unter PmWiki-Voraussetzungen nach.

Wo kann ich eine Dokumentation zu PmWiki finden?

Sehen Sie sich die Seite mit dem Dokumentations-Index an.

Wie kann ich PmWiki herunterladen?

Sehen Sie unter Download nach.

Wie installiere ich PmWiki?

Das ist auf der Installationsseite beschrieben.

Wie bekommen ich Hilfe zu PmWiki?

Sehen Sie nach in den Mailinglisten und unter Wie man Hilfe bekommt.

Wie spricht man "Michaud" aus?

"Michaud" ist französisch und wird "Mie-Scho" ausgesprochen, das End-"d" wird nicht mitgesprochen.

Grundlagen der Bearbeitung

Ich bin neu bei PmWiki, wo kann ich ein paar grundlegende Erklärungen für den Einstieg finden?

Die Seite Grundlagen der Bearbeitung ist ein guter Startpunkt. Von dort aus können Sie dann dem am Seitenende befindlichen Verweis Dokumentations-Index folgen. Dort findet sich eine strukturierte Übersicht über die wichtigsten Dokumentationsseiten.

Wie kann ich Sonderzeichen in den Text meiner Wikiseiten einfügen?

Benutzen Sie Auszeichnungen von der Seite Sonderzeichen, z. B. Copyright (©) und Trademark (® oder ™) sind Symbole, die nicht auf der Tastatur zu finden sind.

Warum werden mehrere Zeilen im Wiki-Quelltext zu einer einzigen Zeile bei der Darstellung der Seite?

PmWiki behandelt direkt untereinander stehende Zeilen mit Text als einen Absatz und fügt deshalb die Zeilen des Quelltextes zusammen und bricht sie bei der Darstellung im Browser je nach Breite des Browserfensters um. Dies wird auch bei den meisten anderen Wiki-Programmen so gemacht. Ein Autor kann aber die Direktive (:linebreaks:) verwenden, um zu erreichen, dass getrennte Zeilen im Quelltext auch bei der Ausgabe als getrennte Zeilen behandelt werden, siehe auch Zeilenumbrüche. Ein Administrator kann aber auch die Zeile
$HTMLPNewline = '<br/>';
in die config.php-Datei einfügen, um den Erhalt von Zeilenumbrüchen zu erzwingen.

Kann ich auch einfach HTML-Kode eingeben?

Standardmäßig unterstützt PmWiki die Verwendung von HTML-Elementen im Wiki-Quelltext nicht. Hierfür gibt es eine Reihe von Gründen, die in der PmWiki-Philosophie und auf der Seite PmWiki:Audiences erläutert werden. Um es kurz zu sagen, vertritt Pm die Auffassung, dass potenzielle Autoren vom Bearbeiten von Wikiseiten abgeschreckt oder sogar ausgeschlossen werden, wenn dort HTML-Kode enthalten ist. Außerdem bringt die Verwendung von HTML-Kode eine Reihe von Darstellungs- und Sicherheits-Problemen mit sich. Ein Administrator kann allerdings das Kochbuch-Rezept Cookbook:EnableHTML nutzen, um die Nutzung von HTML-Kode in Wikiseiten zu ermöglichen.

Wo finde ich weitere Dokumentationen?

Siehe nach im Dokumentations-Index und in der Übersicht über Textauszeichnungen.

Erzeugung neuer Seiten

Wie kann ich eine neue Seite anlegen?

Das Einfügen von [[Neue Seite]] führt dazu, dass ein Verweis? auf NeueSeite angelegt wird. Nach dem Anklicken dieses neuen Verweises können Sie die neue Seite bearbeiten.

Warum haben manche neuen Seiten einen Titel mit Leerzeichen (wie "Neue Seite") und andere einen WikiWort-artigen Titel ohne Leerzeichen (wie "NeueSeite")?

Standardmäßig entspricht der Seitentitel einfach dem Seitennamen, der wiederum normalerweise als "NeueSeite" gespeichert wird. Allerdings können Sie den Seitentitel durch die Verwendung der Direktive (:title Neue Seite:) nach Bedarf selbst definieren. Dies ist besonders nützlich, wenn Sie Sonderzeichen (und deutsche Umlaute gehören dazu) oder eine spezielle Großschreibung im Seitentitel verwenden wollen, die Sie für den Seitennamen nicht benutzen können oder wollen.

Hochladen von Dateien

Wie kann ich es schaffen, dass der Verweis "Datei.pdf" lautet und nicht "Attach:Datei.pdf Δ", wenn ich eine Datei hochlade?

Benutzen Sie Klammern — wie in [[(Attach:)Datei.pdf]]. Es gibt auch eine Konfigurations-Option, mit der sich der "Attach:-Teil" entfernen lässt — siehe dazu Cookbook:AttachLinks (nur auf Englisch verfügbar).

Warum kann ich auf mein neuinstalliertes Wiki keine Dateien hochladen, die größer sind als 50KB?

Die Standardeinstellung für die maximale Dateigröße hochzuladender Dateien ist 50KB. Fügen Sie die Zeile

$UploadMaxSize = 1000000; # begrenzt die Dateigröße von Anhängen auf 1 Megabyte

in Ihre local/config.php-Datei ein, um die Grenze beispielsweise auf 1 MB zu erhöhen. Siehe UploadsAdmin? wegen weiterer Einstellungen und Begrenzungen. Anmerkung: Der Webserver und PHP begrenzen die Größe von hochzuladenden Dateien ebenfalls.

Wer beendet ganz überraschend mein Dateihochladen mit "Incomplete file received"?

Sie könnten nicht genug Platz in einem Bereich für Zwischenspeicherungen haben, der entweder von PmWiki oder von PHP benutzt wird. Auf *nix muss genug Platz in /tmp und /var/tmp sein.

Wie mache ich es, dass der Hochladenverweis einem weiterhin erlaubt, eine weitere Datei hochzuladen (falls jemand die alte Dateiversion durch eine neuere zu ersetzen wünscht)? Momentan bekommt man den Hochladenverweis nur, wenn nicht schon eine Datei in dem Hochladenverzeichnis ist.

Nutzen Sie die Anhängen-Seitenaktion und klicken Sie auf das Deltasymbol (Δ), das an jeder aufgelisteten Datei angezeigt wird. Wenn Sie die Anhängen-Aktion immer noch nicht sehen, sind entweder das Hochladen von Dateien nicht erlaubt, Sie nicht zum Hochladen berechtigt oder die Anhängen-Aktion ist auskommentiert oder fehlt.
Siehe auch Verfügbare Aktionen und werfen Sie einen Blick auf Test?action=upload.

Wie verhindere ich das Hochladen eines gewissen Dateityps?

Hier ist sind Beispiele, was in Ihrer local/config.php-Datei ergänzt werden muss, um Hochladen von .zip-Dateien oder Dateien ohne Dateierweiterung zu verhindern:

$UploadExtSize['zip'] = 0; # verhindert das Hochladen von .zip-Dateien.
$UploadExtSize[''] = 0; # verhindert das Hochladen von Dateien ohne Erweiterung

Wie vermeidet man Probleme mit non-ASCII-Zeichen in den Namen der Anhänge (z. B. "Zażółć geślą jaźń.doc")?

Fügen Sie in ihre local/config.php-Datei die folgende Zeile ein und modifizieren Sie sie für Ihre Bedürfnisse:

$UploadNameChars = "-\w. !=+#"; # erlaube Ausrufezeichen, Gleichheitszeichen, Plus und Doppelkreuz

Wie verberge ich dieses "Attach:" für alle Anhänge?

Siehe Cookbook:AttachLinks. Das funktioniert augenblicklich nicht für [[Attach:my file.ext]].

Wie kann ich Dateien hochladen, die vier-Zeichen-lange Dateierweiterungen haben wie beispielsweise 'abc.pptx'?

Siehe Cookbook:Upload Types.

Wie kann ich andere daran hindern, den URL meiner Bilder auf ihrer Site zu benutzen?

Siehe Cookbook:Prevent Hotlinking

Wie kann ich eine Datei anzeigen, der eine korrekte Dateiendung fehlt? (etwa, wenn ich Cookbook:LinkIcons benutze)

Eine Datei können Sie anzeigen, indem Sie eine "gefälschte" Dateiendung an den URL anhängen. Wenn z. B. der URL http://example.com/dox/mydoc lautet, fügen Sie einen fingierten Querystring mit der gewünschten Dateiendung an (z. B. http://example.com/dox/mydoc?format=.docx). Wenn Querystrings nicht geeignet sind, sollte es ein Bezeichnerfragment tun, z. B. http://example.com/dox/mydoc#.docx.

Einfache Tabellen

Wie erzeuge ich eine einfache Tabelle?

Tabellen werden unter Verwendung des doppelten 'Pipe'-Zeichens '||' erzeugt. Zeilen, die mit diesem Symbol beginnen, zeigen eine Tabellenzeile an; innerhalb solcher Zeilen wird das doppelte 'Pipe'-Zeichen benutzt, um Tabellenzellen zu begrenzen. In dem Beispiel hierunter sind Rahmen hinzugefügt zur Illustration (der Standard ist kein Rahmen).

Basic table
|| border=1 rules=rows frame=hsides
|| Zelle 1 || Zelle 2 || Zelle 3 ||
|| Zelle 1 || Zelle 2 || Zelle 3 ||
Zelle 1Zelle 2Zelle 3
Zelle 1Zelle 2Zelle 3

Wie erzeuge ich Spaltenköpfe?

Spaltenköpfe können erzeugt werden, indem man ein Aussrufezeichen an die erste Stelle einer Zelle setzt. Anmerkung: Dies sind Spaltenköpfe, keine Überschriften, '!!' oder '!!!' funktionieren nicht.

Table headers
|| border=1 rules=cols frame=vsides
||! Zelle 1 ||! Zelle 2 ||! Zelle 3 ||
|| Zelle 1 || Zelle 2 || Zelle 3 ||
Zelle 1Zelle 2Zelle 3
Zelle 1Zelle 2Zelle 3

Wie erhalte ich eine Tabelle mit dünnen Linien und mehr Abstand zum Inhalt?

"Dünne Linien" ist trickreich und browserabhängig, aber das Folgende funktioniert für Firefox und IE (Nov. 2009):

||border="1" cellpadding="10" style="border-collapse:collapse" width=66%
||!Spalte 1 ||! Spalte 2 ||!  Spalte 3||
||Zellen   ||  mit     || 'Padding'||
||und      || dünnen   ||    Linien||
Spalte 1Spalte 2Spalte 3
Zellenmit'Padding'
unddünnenLinien

Wie erzeuge ich eine erweiterte Tabelle?

Siehe unter Tabellendirektiven - komplexe Tabellen anlegen

Meine Tabellen sind standardmäßig zentriert. Wenn ich versuche, '||align=left' zu benutzen, werden sie nicht links ausgerichtet wie erwartet.

Sie benutzen vermutlich Firefox. Benutzen Sie ||style="margin-left:0px;" stattdessen.

Wie kann ich die Breite der Spalten angeben?

Sie können die Breite mit angepassten Stilen definieren, siehe Cookbook:FormattingTables und $TableCellAttrFmt. Fügen Sie in config.php ein:

$TableCellAttrFmt = 'class=col\$TableCellCount';

Und fügen Sie in pub/css/local.css hinzu :

table.column td.col1 { width: 120px; }
table.column td.col3 { width: 40px; }

Wie kann ich ein doppeltes 'Pipe'-Zeichen in einen Zelltext schreiben, wenn ich einfache Tabellen benutze?

Benutzen Sie &#124;&#124; um '||' als ein spezielles Zeichen anzuzeigen. Alternativ dazu könnten Sie die 'Pipe'-Zeichen auch von der Interpretation durch PmWiki ausnehmen, wie das generell für derartige Konflikte möglich ist, schreiben Sie [=||=], um '||' anzuzeigen.

Wie wendet man Stile auf Elemente einer Tabelle an wie eine ID für die Tabellenzeile, oder eine Klasse / einen Stil für TD?

siehe $WikiStyleApply, $WikiStyleApply?.

Alternativ können Sie Tabellendirektiven benutzen, die es erlauben, Stile entweder direkt (style="...") oder durch Klassenattribute für CSS(class="...") anzugeben.

Tabellendirektiven

Kann ich Tabellenköpfe definieren, indem ich die Tabellendirektive benutze?

Ja, benutzen Sie (:head:) oder (:headnr:) mit PmWiki version 2.2.11 oder neuer. Siehe auch Cookbook:AdvancedTableDirectives (auf Englisch)

Ist es möglich, verschachtelte Tabellen anzulegen?

Ja, wenn sie Einfache Tabellen in erweiterten Tabellen einschachteln.

Kann man Hintergrundbilder zu Tabellen oder Tabellenzellen hinzufügen?

Ja, siehe Cookbook:BackgroundImages (auf Englisch).

Ist es möglich, Stile auf Tabellenelemente anzuwenden, wie eine ID für die Tabellenzeile, oder eine Klasse / einen Stil für TD?

Ja, siehe $WikiStyleApply.

Ist es möglich, TableCaptions in Tabellendirektiven zu benutzen wie in einfachen Tabellen? Ich habe ! Captiontext ! und (:caption:) versucht. Das ging nicht.

Sehen Sie sich Cookbook:AdvancedTableDirectives (auf Englisch) an, dort gibt es u. a. die Direktive (:caption:).

Tastaturkürzel

Wie kann ich die Tastaturkürzel fürs Bearbeiten und Speichern einer Seite ändern.

Siehe Anpassen der Tastaturkürzel.

Seitendirektiven

Lässt sich (:redirect:) dazu bringen, den Status-Code "Permanent verschoben" (HTTP 301) anzuzeigen?

Das geht mit (:redirect SeitenName status=301:).

Gibt es eine Möglichkeit, den Text "umgeleitet von ..." ganz oben auf der Zielseite zu unterdrücken, wenn ich (:redirect:) nutze?

Dafür gibt es verschiedene Möglichkeiten.

Wenn die Nachricht grundsätzlich unterdrückt werden soll:

  • Fügen Sie $PageRedirectFmt = ''; zur Datei local/config.php hinzu.

Wenn die Nachricht je nach Zielseite der Umleitung unterdrückt werden soll:

Wenn die Nachricht je nach Herkunftsseite der Umleitung unterdrückt werden soll:

  • fügen Sie den folgenden Kode zur Datei local/config.php hinzu:
if (@$_GET['from']) {
  $group = PageVar($_GET['from'], '$Group');
  if ($group == 'IrgendeineGruppe') $PageRedirectFmt = '';
}
(Im obigen Beispiel möchten Sie eventuell 'IrgendeineGruppe' durch 'Profiles' ersetzen.)
  • Eine Alternative ist es, die Zielseite mittels (:include:) einzubinden, anstatt eine Umleitung zu nutzen.
  • Seit der Version 2.2.1 setzen Sie in der config.php $EnableRedirectQuiet=1; und in der Seite (:redirect AndereSeite quiet=1:) für eine stille Umleitung.

Gibt es eine Methode, auf eine äquivalente Seite in einer anderen Gruppe umzuleiten, z. B. von SchlechteGruppe/Seite => GuteGruppe/Seite – etwa indem man eine Formatierungsanweisung wie (:redirect GuteGruppe.{$Name}:) verwendet?

(:redirect GuteGruppe.{$Name}:) ist möglich, wenn Sie die Anweisung einfach nur in einer bestimmten Seite verwenden wollen.
Wenn das für eine ganze Gruppe funktionieren soll, fügen Sie (:redirect GuteGruppe.{*$Name}:) in die Seite SchlechtGruppe.GroupHeader ein. Dies funktioniert allerdings nur mit Seiten, die in GuteGruppe existieren; wenn Sie eine Seite in SchlechteGruppe aufrufen, für die es keine korrespondierende Seite in GuteGruppe gibt, wird die(:redirect:)-Direktive am Seitenanfang angezeigt (anstatt dass Sie auf eine nicht-existierende Seite umgeleitet werden).
Mit (:if exists GuteGruppe.{*$Name}:)(:redirect GuteGruppe.{*$Name}:)(:ifend:) in der Seite SchlechteGruppe.GroupHeader werden Sie auf GuteGruppe.Name umgeleitet, sofern diese Seite existiert, ansonsten bleiben Sie auf SchlechteGruppe.Name, ohne dass irgendein Kode-Schnipsel angezeigt wird.

Wie kann ein Wiki standardmäßig Zeilenumbrüche aktivieren, d. h. ohne die Direktive (:linebreaks:) in einer Seite oder im Gruppen-Header einzufügen?

Fügen Sie in config.php eine solche Zeile hinzu:
$HTMLPNewline = '<br/>';

Einbinden anderer Seiten

Wieviele Include-Direktiven kann es höchstens in einer Seite geben.

Meine Site scheint nach 48 Einbindungen aufzuhören. ($MaxIncludes)

Im Standard limitiert PmWiki die Zahl der Include-Direktiven für eine Seite auf 50, um unendliche Schleifen zu verhindern – auch andere Situationen, die die Recourcen des Servers aufessen könnten. Zwei der eingebundenen Seiten sind GroupHeader und GroupFooter, bleiben noch die 48. Die Grenze kann von einem Wiki-Administrator über die Variable $MaxIncludes hochgesetzt werden.

Gibt es eine Möglichkeit, Einbindungen aus einer Gruppe von Seiten zu machen, ohne exakte Namen anzugeben, z. B. zwischen Anker X und Y von allen Seiten namens IFClass-* ?

Das kann man mit PageLists? erreichen.

Es scheint ein Problem mit der Anzeige zu geben, wenn eine Seite die (:title:)-Direktive enthält.

In der Standard-Installation überschreibt der letzte Titel in der Seite alle vorangegangenen Direktiven. Man kann seine (:title :)-Directive an das Ende der Seite setzen, nach allen Include-Direktiven, siehe auch $EnablePageTitlePriority.

Welchen Test mache ich, um zu sehen, ob die Seite ein Teil einer anderen Seite ist?

(:if ! name {PmWikiDe.IncludeOtherPages$FullName}:) 
%comment% Der Name dieser Seite ist nicht der Gleiche wie der Name der Seite, aus der dieser Text herausgezogen wurde.
->[[{PmWikiDe.IncludeOtherPages$FullName}#anchor | more ...]]
(:ifend:)

Der Name dieser Seite ist nicht der Gleiche wie der Name der Seite, aus der dieser Text herausgezogen wurde.

Gibt es irgendeinen Weg, (Kapitel von) Seiten, die geschützt sind (authuser.php), woanders einzubinden.

Sie können Ihr Ziel andersherum erreichen: setzen Sie die öffentlichen Abschnitte in eine öffentliche Seite (passwdread=@nopass or @_site_read) und binden Sie diese Abschnitte sowohl in die geschützte Seite als auch in die ungeschützte Seite ein.

Beachten Sie, dass es nachdrücklich empfohlen wird, NICHT zu versuchen, in einer ungeschützten Seite sensitive Inhalte innerhalb einer bedingten Auszeichnung zu verbergen.

InterMap-Präfixe

Ist die Groß/Kleinschreibung der InterMap-Namen relevant.

Ja, es ist also eAdmin: ein anderer InterMap-Verweis als EAdmin:.

Wie erreiche ich eine localmap.txt-Abbildung mit dem Effekt von Pics: Path:/somepathto/pics/?

Benutzen Sie das Folgende:

Pics: /somepathto/pics/

Wie kann ich ein InterMap in PHP definieren?

Benutzen Sie das Folgende:

      $LinkFunctions['PmWikiHome:'] = 'LinkIMap';
      $IMap['PmWikiHome:'] = 'https://pmwiki.org/wiki/$1';

Siehe auch $LinkFunctions

Seitenspezifische Variablen

Gibt es eine Variable wie $LastModified, die aber die Erstellungszeit anzeigt?

Nein, aber Sie können eine in config.php erzeugen. Zum Beispiel:

# add page variable {$PageCreationDate} in format yyyy-mm-dd
$FmtPV['$PageCreationDate'] = 'strftime("%Y-%m-%d", $page["ctime"])';

Wenn Sie lieber das in config.php definierte Format erhalten möchten, benutzen Sie:

 $FmtPV['$Created'] = "strftime(\$GLOBALS['TimeFmt'], \$page['ctime'])";

Wie kann ich testen, ob ein Variable gesetzt ist und/oder nicht leer?

Benutzen Sie (:if ! equal "{$Variable}" "":) $Variable ist nicht leer. (:ifend:). Beachten Sie, dass nicht definierte oder nicht existierende Variablen als leere Variablen erscheinen.

Kopfbereich (und Fußbereich) der Gruppe

Wie setze ich den gleichen Kopf- oder Fußbereich für alle Seiten und Gruppen?

Der Kopf- und Fußbereich für jede Seite wird von den Variablen $GroupHeaderFmt? und $GroupFooterFmt? bestimmt. Wenn Ihre siteweiten Kopf- und Fußbereich-Seiten Site.SiteHeader und Site.SiteFooter heißen, können Sie das Folgende in Ihre config.php-Datei aufnehmen:

### Wenn Sie Site.SiteHeader und Group.GroupHeader nutzen
### Site.SiteHeader erscheint oberhalb von Group.GroupHeader
$GroupHeaderFmt = '(:include {$SiteGroup}.SiteHeader'
  . ' basepage={*$FullName}:)(:nl:)' . $GroupHeaderFmt;
### Wenn Sie Site.SiteHeader statt Group.GroupHeader nutzen
$GroupHeaderFmt = '(:include {$SiteGroup}.SiteHeader'
  . ' basepage={*$FullName}:)(:nl:)';
### Wenn Sie Site.SiteFooter und Group.GroupFooter nutzen
### Site.SiteFooter erscheint unterhalb von Group.GroupFooter
$GroupFooterFmt .= '(:nl:)(:include {$SiteGroup}.SiteFooter'
  . ' basepage={*$FullName}:)';
### Beachten Sie die Zuweisung mit .=
### Wenn Sie Site.SiteFooter statt Group.GroupFooter nutzen
$GroupFooterFmt = '(:nl:)(:include {$SiteGroup}.SiteFooter'
  . ' basepage={*$FullName}:)';

Beachten Sie, dass die einfachen Anführungszeichen erforderlich sind, damit der vorherige Inhalt von $GroupHeaderFmt? von PmWiki korrekt ersetzt werden kann (das trifft auf alle Variablen zu, die auf $...Fmt enden).

Siehe auch das Rezept Cookbook:AllGroupHeader

Anstatt eine zusätzliche Seite zu benutzen, können Sie auch jeglichen Wikiquelltext in $GroupHeaderFmt? setzen, zum Beispiel:

$GroupHeaderFmt .= "Globale Hinweise oder Nachrichten im Header";

Klappt das auch für Fußbereiche?

$GroupFooterFmt = '(:include {$SiteGroup}.SiteFooter
                   basepage={*$FullName}:)(:nl:)' . $GroupFooterFmt;

Ja, ich verwende das in meiner config.php und es funktioniert einwandfrei Ian MacGregor?

Seitenabfolge

Was ist der Unterschied zwischen einer Seitenliste? und einer Seitenabfolge?

Die Seitenlistendirektive erzeugt dynamisch Listen von Seiten. Es gibt viele Arten, wie man diese Listen erzeugen kann, einschließlich des Einsatzes von Seitenabfolgen als Quelle. Die Seitenlistendirektive zeigt dann die Seiten an, die bestimmten Kriterien entspricht, wobei sie eine optionale Vorlage benutzt – z. B. Anzeigen jeder Seite auf einer eigenen Zeile als einen Verweis oder Ausgabe des kompletten Inhalts. Die Seitenlistendirektive hat gegenwärtig kein eingebautes Navigations-Markup, das man in die Seiten der Liste setzen kann.

Im Kontrast dazu sind die Seitenabfolgen einfach durch Verweise auf einer "Index"-Seite beschrieben und man kann vor&zurück-Navigations-Elemente in alle Seiten einfügen. Die zwei dienen verschiedenen Zwecken. Seitenabfolgen sind nützlich für Web-Feeds, zum Erzeugen einer "Tour" durch einen vorgegebenen Satz von Seiten und viele weitere Dinge.

Seitenversionen

Gibt es eine Möglichkeit, die Seitenhistorie aus den Seitendateien zu entfernen?

1. Administratoren können das mittels Cookbook:ExpireDiff durchführen.

2. Administratoren können einzelne Seiten mittels FTP aus dem wiki.d Verzeichnis herunterladen, im Texteditor öffnen, die Historie manuell entfernen und die Datei wieder hochladen. Vorsicht ist geboten, damit die erforderlichen Elemente der Seite erhalten bleiben (siehe PageFileFormat#creating).

3. Sie können die Seite bearbeiten, den gesamten Inhalt in die Zwischenablage kopieren (oder besser noch in einer temporären Textdatei speichern), delete im Textbereich eingeben und Speichern und Bearbeiten klicken. Speichern von "delete" verwirft die Seite samt Historie. Die gelöschte Seite bleibt im wiki-d/-Verzeichnis erhalten (siehe Löschen von Seiten.)
Jetzt fügen Sie den zuvor kopierten Text wieder ein und Speichern. Vorsicht ist geboten, dass der Text aus der Zwischenablage nicht verloren geht!

Wie kann ich den Zugriff auf die Historie (?action=diff) auf Benutzer mit Editiererlaubnis beschränken?

Füge in der Datei local/config.php

$HandleAuth['diff'] = 'edit';

hinzu. Wenn diese Einschränkung für eine ganze Farm eingerichtet wurde und man will in einem bestimmten Wiki 'diff' wieder erlauben, fügt man in local/config.php dieses Wikis

$HandleAuth['diff'] = 'read';

hinzu.

Löschen von Seiten

FAQ

Wie werde ich Gruppen wieder los, nachdem ich sie einmal angelegt habe?

Ein Administrator kann die unerwünschten Seiten einfach aus dem Verzeichnis wiki.d/ löschen. Bedenken Sie, dass eine Wikigruppe auch mit ihr verbundene Uploads enthalten kann.

Im Normalfall reicht es nicht, alle Seiten einer Gruppe über das Wiki (mittels delete) zu löschen, weil das Löschen der Seiten als Änderung interpretiert wird und die Seite RecentChanges neu erzeugt wird. Es ist aber möglich, die Konfiguration so zu ändern, dass die RecentChanges-Seiten für Wikigruppen über das Wiki gelöscht werden können – siehe das Kochbuch-Rezept Cookbook:RecentChangesDeletion (nur auf Englisch verfügbar).

Installation

Könnte ich nicht pmwiki.php in index.php umbenennen?

Vom Umbenennen wird abgeraten. Statt dessen erzeugen Sie eine neue Datei namens index.php mit der folgenden einzigen Textzeile (und lassen Sie das schließende Tag "?>" ganz bewusst weg):

<?php include_once('pmwiki.php');

Wie mache ich pmwiki.php zur Standardseite einer Website?

Erzeugen Sie eine index.php-Datei, die PmWiki aus einem Unterverzeichnis heraus startet (z. B. aus pmwiki/) und setzen Sie sie in das Wurzelverzeichnis der Site (das Hauptverzeichnis der Website).

<?php chdir('pmwiki'); include_once('pmwiki.php');

Annmerkung: Sie müssen auch ausdrücklich die $PubDirUrl-Variable setzen (beispielsweise auf "http://example.com/pmwiki/pub" in der local/config.php-Datei.

Wie kann ich "saubere URLs" aktivieren, die kürzer sind und mehr nach Pfaden zu meinen Wikiseiten aussehen? Warum scheint pmwiki.org eher eine Verzeichnisstruktur zu haben anstelle von "?n=seitenname" in den URLs?

Siehe Cookbook:CleanUrls.

Wie kann ich PmWiki auf einer selbstständigen Maschine (offline, portabel) laufen lassen?

Siehe Cookbook:Standalone oder Cookbook:WikiOnAStick.

Aktualisierungen

Wie kann ich herausfinden, welche Version von PmWiki bei mir läuft?

Siehe Version - So findet man die Version von PmWiki heraus..

Wie kann ich eine neue Version von PmWiki testen, ohne die vorige Version zu ändern, die die Besucher benutzen?

Der leichte Weg, das zu tun, ist, die neue Version in einem separaten Verzeichnis zu installieren und in deren local/config.php-Datei das Folgende einzufügen:


    $WikiLibDirs = array(&$WikiDir,
      new PageStore('/path/to/existing/wiki.d/{$FullName}'),
      new PageStore('wikilib.d/{$FullName}'));

Wenn Seiten aufgerufen werden, werden sie (vorausgesetzt, an den Standardnamen wurde nichts geändert) der Reihe nach in wiki.d, /path/to/existing/wiki.d/ und wikilib.d gesucht. Der erste Fund wird dann geladen. Gespeichert wird das Ergebnis immer in wiki.d.

Das lässt Sie die neue Version mit existierenden Seiteninhalten testen, ohne Auswirkungen auf die existierende Site und ohne Modifikationen an den Seiten zu riskieren. (Natürlich müssen auch alle Rezepte und lokale Anpassungen in der neuen Version installiert werden.)

Wenn Sie dann irgendwann zufrieden mit der neuen Version sind und alles so zu funktionieren scheint wie in der alten Version, ist es sicher, die alte Version auf die neue upzugraden (und man kennt alle Konfigurations- und Seitenänderungen, die notwenig gemacht werden müssen.)

Sicherheit

Wie melde ich mögliche Verwundbarkeiten der Sicherheit in PmWiki?

Pm schrieb darüber in einer Veröffentlichung an pmwiki-Benutzer vom September 2006. In aller Kürze unterscheiden er zwischen zwei Fällen:

  1. Die mögliche Verwundbarkeit ist noch nicht öffentlich bekannt: In diesem Fall kontaktieren Sie Pm in einer persönlichen Mail.
  2. Die mögliche Verwundbarkeit ist bereits öffentlich bekannt: In diesem Fall diskutieren Sie die Verwundbarkeit öffentlich (z. B. auf pmwiki-users).

Siehe seine oben erwähnte Nachricht wegen Details und Begründungen.

Was ist mit den Botnet-Sicherheits-Ratschlägen in http://isc.sans.org/diary.php?storyid=1672?

Sites, bei denen PHPs register_globals-Einstellungen auf "On" gesetzt sind und Versionen vom PmWiki vor 2.1.21 könnten verwundbar durch ein Botnet sein durch Ausnutzen eines Fehlers in PHP. Die Verwundbarkeit kann geschlossen werden, indem man register_globals auf "off" stellt, auf PmWiki 2.1.21 oder später upgradet oder die PHP-Versionen 4.4.3 oder 5.1.4 upgradet.
Zusatz: Es gibt einen Test in PmWiki:SiteAnalyzer, der benutzt werden kann, um zu bestimmen, ob Ihre Site verwundbar ist.

Wiki-Vandalismus und Spam

Annahmen
Sie nutzen eine Blockadeliste und Url-Freigabe.
Sie wollen nicht darauf zurückgreifen, das gesamte Wiki durch Passwords? zu schützen, das ist letztlich nicht der Punkt.
Idealerweise wird dieser Schutz in config.php aktiviert.

Wie beende ich das Löschen von Seiten, d. h. wie schütze ich Seiten vorm Löschen mit einem Passwort?

Benutzen Sie Cookbook:DeleteAction und schützen Sie die Löschen-Aktion mit einem Passwort,

indem Sie $DefaultPasswords['delete'] = '*'; in die config.php einfügen
oder schützen Sie die Aktion
durch $HandleAuth['delete'] = 'edit'; um ein Bearbeiten-Passwort für das Löschen erforderlich zu machen,
oder durch $HandleAuth['delete'] = 'admin'; um ein Administrator-Passwort für das Löschen erforderlich zu machen.

Wie verhindere ich, dass Seiteninhalte durch eine leere (alles Leerzeichen) Seite ersetzt wird?

Fügen Sie block: /^\s*$/ zu Ihrer Blockadeliste hinzu.

Wie kann ich verhindern, dass Seiten durch alberne Kommentare wie exellente Site, großartige Informationen, ersetzt werden, wo der Inhalt nicht blockiert werden kann?

Versuchen Sie eine neuere Automatische Blockadeliste, die Informationen über IP-Adressen von bekannten Wiki-Verunstaltern zieht.

(ODER) Versuchen Sie Cookbook:Captchas or Cookbook:Captcha anzuwenden (Beachten Sie, die sind verschieden).

(ODER) Setzen Sie ein Bearbeiten-Passwort, machen es aber in der Site.AuthForm-Vorlage öffentlich.

Wie kann ich alle gemeinsamen Seiten in allen Gruppen wie RecentChanges, Search, GroupHeader, GroupFooter usw. mit einem Passwort schützen?

Fügen Sie die folgenden Zeilen in Ihre local/config.php-Datei ein. Ein Bearbeiten dieser Seiten wird dann ein Administrator-Passwort erfordern.

## Require admin password to edit RecentChanges (etc.) pages.
if ($action=='edit'
    && preg_match('/\\.(Search|Group(Header|Footer)|(All)?RecentChanges)$/', $pagename))
  { $DefaultPasswords['edit'] = pmcrypt('secret phrase'); }

Anmerkung: Alle GroupAttributes-Seiten sind durch das 'attr'-Passwort geschützt.

Alternative: Sie können eine 'admin'-Authentifizierung für diese Seiten erforderlich machen:

## Require admin password to edit RecentChanges (etc.) pages.
if ($action=='edit' 
    && preg_match('(Search|Group(Header|Footer)|(All)?RecentChanges)', $pagename))
  { $HandleAuth['edit'] = 'admin'; }
Ich fürchte, wegen meiner sauberen URLs muss ich den regulären Ausdruck etwas kürzen. Außerdem setze ich das Bearbeiten-Passwort für diese Seiten auf das Administrator-Passwort in $DefaultPasswords['admin'] = pmcrypt('secret phrase'); in local/config.php.
Soweit ich sehen kann, funktioniert das für mich wie erwartet. --Rico, 2007-02-02

Wie schütze ich das Anlegen neuer Gruppen mit einem Passwort?

Siehe Cookbook:Limit Wiki Groups

Wie schütze ich das Anlegen neuer Seiten mit einem Passwort?

Siehe Cookbook:Limit new pages in Wiki Groups

Wie kann ich eine Art Whitelist machen, wo Benutzer von bekannten oder vertrauenswürdigen IP-Adressen Seiten bearbeiten können, alle Anderen aber ein Passwort brauchen?

Fügen Sie diese Zeilen in local/config.php ein:

## Allow passwordless editing from own turf, pass for others.
if ($action=='edit'
 && !preg_match("^90.68.", $_SERVER['REMOTE_ADDR']) )    
 { $DefaultPasswords['edit'] = pmcrypt('foobar'); }

Ersetzen Sie "90.68." durch den bevorzugten Netzwerk-Präfix und "foobar" durch das Standardpasswort für Andere.

Für eine einzelne IP benutzen Sie:

if($_SERVER['REMOTE_ADDR'] == '127.0.0.1') { # Ihre IP-Adresse hierhin
 $_POST['authpw'] = 'xxx';                  # das Admin-Passwort
}

Bitte beachten Sie die Sicherheitsaspekte: das bedeutet nämlich, dass Sie das Admin-Passwort als Klartext in Ihrer config.php-Datei stehen haben und jemand mit Zugriff auf das Dateisystem diese Datei lesen kann, z. B. ein technischer Mitarbeiter des hostenden Providers. Ihre IP-Adresse kann sich gelegentlich ändern (es sei denn, Sie haben einen Vertrag über eine fixe IP mit ihrem Internet-Service-Provider [ISP]). Wenn das passiert, wird jemand mit Ihrer alten IP-Adresse automatisch als Admin in Ihrem Wiki angemeldet. Es ist extrem unwahrscheinlich, dass es Probleme gibt, aber Sie sollen wissen, dass das möglich ist. Wenn Sie hinter einem Router sitzen, haben alle anderen Geräte hinter diesem Router im Internet die gleiche IP-Adresse wie Sie (aus der Sicht des Wikis) — Ihr WiFi-Telefon, dass Notebook Ihrer Frau, ein Nachbar, der Ihre WiFi-Verbindung mitbenutzt etc. Alle diese Leute werden Admin Ihres Wikis. Nochmal: Sie sollten prüfen, ob sich daraus ein Sicherheitsrisiko ergibt. In manchen Fällen routet Ihr ISP Ihren Verkehr gemeinsam mit dem anderer Leute über einen gemeinsamen Proxy(-Server) — in solch einem Fall könnten tausende von Leuten die selbe IP-Adresse haben.

Siehe auch Cookbook:AuthDNS & Cookbook:PersistentLogin

Wie setze oder lösche ich ein Passwort für eine Gruppe oder Seite in config.php?

siehe Passwords? und PasswordsAdmin?.

Wie schütze ich Seitenaktionen durch ein Passwort?

Siehe Passwords? wegen der Einstellungen in der config.php-Datei.

$HandleAuth['pageactionname'] = 'pageactionname'; # zusammen mit :
$DefaultPasswords['pageactionname'] = pmcrypt('secret phrase');

oder

$HandleAuth['pageactionname'] = 'anotherpageactionname';

Wie erlaube ich Verfassern nur dann zu veröffentlichen, wenn Sie auch ein Profil? haben?

Fügen Sie dies in Ihre local/config.php unterhalb der include_once("$FarmD/scripts/author.php");-Zeile:

if(!PageExists('Profiles.'.$Author)&&$action=='edit')
$HandleAuth['edit'] = 'admin';

Dies ist eine mögliche Lösung, aber seien Sie gewarnt, Autoren können dann auch keine Wikiseite in der Profile-Gruppe? neu anlegen.
Ergänzen Sie if($group != 'Profiles') oben ;-)

Wie macht man eine Regel, die nur den Autoren selbst erlaubt, ihre eigene Wikiseite in der Profile-Gruppe? zu bearbeiten?

Fügen Sie dies zu Ihrer local/config.php-Datei hinzu:

$name = PageVar($pagename, '$Name');
if($group=='Profiles') $DefaultPasswords['edit'] = 'id:'.$name;

Wie moderiere ich alle Veröffentlichungen?

Aktivieren Sie Entwürfe

  • Setzen Sie $EnableDrafts, damit wird der "Save"-Button in zwei einzelne Buttons aufgeteilt: "Publish" und "Save draft".
  • Setzen Sie dann $EnablePublishAttr. Das fügt eine "Publish"-Autorisierungsebene ein, um das Bearbeiten der Entwürfe vom Publish des neuen Textes unterscheiden zu können.

Wie mache ich ein Read-Only-Wiki?

Setzen? Sie ein 'edit'-Passwort in config.php.

Wie schränke ich den Zugriff auf hochgeladene Anhänge ein?

Siehe

Wie verberge ich die IP-Adresse in den "diff"-Seiten?

Wenn der Benutzer einen Benutzernamen einträgt, erscheint dieser an stelle der IP-Adresse. Um das Eintragen eines Benutzernamen zu erzwingen, setzen Sie das Folgende in die config.php-Datei ein: $EnablePostAuthorRequired = 1; Die IP-Adress kann auch in dem Tooltip-Titel erscheinen, wenn der Mauscursor über dem Autorennamen ist. Wenn Sie das deaktivieren möchten, dass setzen Sie das Folgende in Ihre config.php-Datei:

$DiffStartFmt = 
  "<div class='diffbox'><div class='difftime'><a name='diff\$DiffGMT' href='#diff\$DiffGMT'>\$DiffTime</a>
   \$[by] <span class='diffauthor'>\$DiffAuthor</span> - \$DiffChangeSum</div>";

Wie halte ich einige Apacheinstallationen davon ab, (hochgeladene) Dateien die ".php", ".pl" oder ".cgi" irgendwo im Dateinamen haben, auszuführen.

Benutzen Sie $UploadBlacklist

Wie hindere ich irgendwelche Leute daran, den Quelltext meiner Wikiseiten mit ?action=source zu inspizieren. Ich habe (:if auth edit:)-Text darin, den ich nicht der ganzen Welt präsentieren möchte.

$HandleAuth['source'] = 'edit'; oder $HandleAuth['source'] = 'admin';

Wie sichere ich meine Cookies?

Siehe $EnableCookieSecure und $EnableCookieHTTPOnly

Wikistile anpassen

Wie kann ich die Unterstreichung von einem Verweis entfernen, aber eine blaue Unterstreichung hinzufügen, wenn die Maus über den Verweise gleitet?

Fügen Sie in pub/css/local.css folgende Zeilen hinzu: .noul a {text-decoration: none;} .noul a:hover {text-decoration: underline; color: blue;}

Dann benutzen Sie diese Auszeichnung: %noul% [[Link]] %%

Ich habe dies versucht, aber 'background' funktioniert nicht, obwohl 'border' und 'float' gehen.

$WikiStyle['vMenu']['background']='#ffffcc' ;
$WikiStyle['vMenu']['float']='left' ;
$WikiStyle['vMenu']['border']='1px dotted red' ;

Verwenden Sie $WikiStyle['vMenu']['background-color']='#ffffcc'; – anders als 'background' ist 'background-color' im $WikiStyleCSS-Array definiert, in welchem gültige Eigenschaften zum Prüfen aufgeführt werden.

Wie setze ich ein Bildchen an die linke Seite eines Absatzes? Ich möchte gern ein Icon einfügen für wichtige Absätze oder Warnungen und Hinweise etc.

siehe WikiStylesPlus und Callout.

Internationalisierungen

Wenn mein Wiki internationalisiert ist durch die config.php, wie kehre ich für eine bestimmte Gruppe zu Englisch zurück?

Benutzen Sie $XLLangs = array('en'); in der Anpassungsdatei der Gruppe (<gruppenname>.php, siehe Individuelle Einstellungen pro Gruppe).

Wenn mein Wiki in Englisch ist und ich nur eine Seite oder eine Gruppe auf Spanisch haben will, schreibe ich dann XLPage('es','PmWikiEs.XLPage'); in die Gruppen- oder Seitenkonfigurationsdatei?

Ja, das ist gewöhnlich die beste Methode. Wenn Sie das mit vielen verteilten Seiten tun oder mit mehreren Sprachen, finden Sie es vielleicht leichter zu verwalten, wenn Sie die Übersetzungen alle in config.php laden wie hier:

    XLPage('es','PmWikiEs.XLPage');
    XLPage('fr','PmWikiFr.XLPage');
    XLPage('ru','PmWikiRu.XLPage');
    $XLLangs = array('en');

In der Gruppen- oder Seitenkonfigurationsdatei müssen sie dann nur $XLLangs = array('es'); schreiben, um die Sprache einzustellen, die benutzt werden soll (in diesem Beispiel Spanisch).

Anmerkung: Obwohl diese Methode leichter zu verwalten ist, ist sie etwas langsamer, weil jedes Mal alle Übersetzungstabellen für jedes Seitenansehen geladen werden, auch wenn sie nicht gebraucht werden.

Wofür steht der erste Parameter in dieser Funktion? Wie wird er benutzt?

Der XLPage-Mechanismus erlaubt mehrere Übersetzungssätze zu laden, der erste Parameter dient dazu, diesen Satz zu bestimmen.

Angenommen, ich will zum Beispiel Übersetzungen für normales Französisch und kanadisches Französisch haben. Anstatt zwei ganz und gar getrennte Sätze von Seiten zu verwalten, kann ich dies tun:

    XLPage('fr', 'PmWikiFr.XLPage');
    XLPage('fr-ca', 'PmWikiFrCa.XLPage');

PmWikiFr.XLPage würde die ganzen Standardfranzösisch-Übersetzungen enthalten, wohingegen PmWikiFrCA.XLPage nur die kanada-spezifischen Übersetzungen enthalten muss – d. h. jene, die sich von denen aus der französischen Seite unterscheiden.

Der erste Parameter unterscheidet die zwei Sätze der Übersetzungen. Zusätzlich kann ein config.php-Skript die $XLLangs-Variable benutzen, um die Reihenfolge der Übersetzungen einzustellen, wenn es also eine Gruppe oder Seite gibt, wo ich nur die Standardfranzösisch-Übersetzung haben möchte, setze ich:

    $XLLangs = array('fr', 'en');

und PmWiki nutzt nur die 'fr'- und 'en'- Übersetzungen (in dieser Reihenfolge), egal, wie viele Übersetzungen mit XLPage() geladen worden sind.

Wie kann ich eine Übersetzung für einen individuellen String in einer PHP-Datei hinzufügen?

Benutzen Sie die XLSDV()-Funktion, um eine Übersetzung für einen bestimmten (englischen) String zu liefern. Zum Beispiel hiermit in der config.php-Datei

    XLSDV('nl', array('my English expression'=>'mijn Nederlandse uitdrukking'));

wird jedes Vorkommen des Variablenausdrucks $[my English expression] im Wikiquelltext im Standardkontext (englisch) als my English expression ausgegeben, aber als mijn Nederlandse uitdrukking in niederländischem (nl) Kontext, z. B. wenn XLPage('nl',...) für jene Seite in der config.php oder einem Kochbuchrezept aufgerufen worden ist.

Wenn Sie eine Übersetzung in einer PHP-Datei erhalten wollen, benutzen Sie die XL()-Funktion:

    $local_string = XL("my English expression");

Aber seien Sie auf der Hut: Die XLPage()-Funktion benutzt intern auch die XLDV()-Funktion für ihre Übersetzungspaare und nur die erste Definition wird akzeptiert. Wenn daher die niederländische XLPage bereits einen Übersetzung für ihren String wie

'my English expression' => 'bla bla',

besitzt und Sie wollen den überschreiben, müssen sie Ihr XLDV('nl', ...) vor dem Aufruf vom korrespondierenden XLPage('nl',...) benutzen. Andernfalls, durch Benutzen von XLSDV() nach XLPage() – z. B. innerhalb eine Rezeptes, das später in der config.php geladen wird – wird ihre Übersetzung nur funktionieren, solange keiner 'my English expression' in jener XLPage definiert.

Lokale Anpassungen

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 bekommen ich den Gruppen- oder Seitennamen in eine 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 config.php 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.

Individuelle Einstellungen pro Gruppe

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.

Skins (Layout-Vorlagen)

Wie ändere ich den Standardnamen des Wikis in der oberen linken Ecke?

Setzen Sie das Folgende in die config.php:

$WikiTitle = 'My Wiki Site';

Die docs/sample-config.php-Datei enthält ein Beispiel zum Ändern des Titels.

Wie kann ich PmWiki-Seiten in eine Webseite einbetten.

Lassen Sie sie durch eine PHP-Seite laufen oder setzen Sie sie in einen Frame.

Wie ändere ich die Font- oder Hintergrundfarbe des Hinweisblockes auf der Bearbeiten-Seite?

Fügen Sie einen CSS-Stil in die pub/css/local.css-Datei ein. .quickref {background-color:...; color:... }. Die Hinweise werden durch die Site.EditQuickReference-Seite bzw. die PmWikiDe.EditQuickReference-Seite zur Verfügung gestellt. Bearbeiten Sie diese Seite und ändern Sie "bgcolor" oder geben Sie einen Wert für "color" für die Fontfarbe an, so dass sie den gewünschten Kontrast bekommen.

Skinvorlagen

Wie passe ich die CSS-Stile für mein PmWiki-Layout an.

Sehen Sie unter Skins nach, wie Sie das Standardwikiskin verändern können. Siehe auch unter Skins, wo weitere vorgefertigte Skins zu finden sind, die man benutzen kann, um das Aussehen der eigenen Site seinem eigenen Geschmack anzupassen. Sie können auch eine Datei local.css im pub/css-Verzeichnis erstellen, um die CSS-Selektoren dort hinzuzufügen (diese Datei wird automatisch eingebunden, wenn sie existiert). Oder Sie fügen Stile direkt in Ihrer lokalen Anpassungsdatei hinzu, indem Sie etwas Folgendes schreiben:

$HTMLStylesFmt[] = '.foo { color:blue; }';

Wo findet man die erwähnte Übersetzungstabelle, so dass man Übersetzungswendungen hinzufügen kann?

Siehe unter Internationalisierungen.

Ist es möglich, ein Bearbeiten-Formular über die ganze Fensterbreite zu bekommen ohne die SideBar?

Wenn die SideBar mit <!--PageLeftFmt--> markiert ist, fügt man (:noleft:) in die Seite Site.EditForm ein. Das versteckt die SideBar beim Bearbeiten.

Kann man den Titel der Startseite ("HomePage") einfach von der Startseite entfernen/verbergen?

Ja, man kann in der Wikiseite den Titel auf (:title Ein besserer Titel:) ändern oder mit (:notitle:) unterdrücken.

Ist es möglich, die Search-Bar in dem Standardskin von PmWiki zu verbergen?

Ja, siehe bitte unter Cookbook:HideSearchBar.

Web-Feeds

Wie füge ich dem Feed-Body Text von der Seite hinzu (ganze Seite oder die ersten X Zeichen)? (Und bitte: KEIN markup)

    function MarkupExcerpt($pagename) {
      $page = RetrieveAuthPage($pagename, 'read', false);
      return substr(@$page['text'], 0, 200);
    }

    $FmtPV['$MarkupExcerpt'] = 'MarkupExcerpt($pn)';
    $FeedFmt['rss']['item']['description'] = '$MarkupExcerpt';

Heißt das, wenn ich die Zeit im RSS-Titel und "summary" im RSS-Body einfügen will, muss ich FeedFmt zweimal wie folgt aufrufen?

$FeedFmt['rss']['item']['description'] = '$LastSummary'; 
$FeedFmt['rss']['item']['title'] = '{$Group} / {$Title} @ $ItemISOTime';
From mailing list Feb 13,2007, a response by Pm: Yes

Wie nutze ich das RSS-<enclosure>-Tag für Podcasting?

Für Podcasting von mp3-Dateien hängen Sie einfach eine mp3-Datei an die Seite an, und zwar mit dem gleichen Namen wie die Seite (z. B. für eine Seite namens Podcast.Episode4 würden Sie eine Datei namens "Episode4.mp3" an die Seite anhängen). Die Datei wird automatisch durch ?action=rss aufgenommen und als eine Anlage behandelt.

Der Satz an möglichen 'enclosures' (Anlagen) ist vom $RSSEnclosureFmt-Array vorgegeben, demnach erlaubt

$RSSEnclosureFmt = array('{$Name}.mp3', '{$Name}.wma', '{$Name}.ogg');

Podcasting in mp3-, wma- und ogg-Formaten.

Wie füge ich eine Zusammenfassung ("summary") zum Titel in einem RRS-Feed hinzu (d. h. mit ?action=rss)?

Fügen Sie diese Zeile in Ihre local/config.php-Datei ein:

$FeedFmt['rss']['item']['title'] = '{$Group} / {$Title} : $LastModifiedSummary';

Wie füge ich die Beschreibung ("description") zum Titel und die "summary" zum Body hinzu?

Fügen Sie diese Zeilen in Ihre local/config.php-Datei ein:

$FeedFmt['rss']['item']['title'] = '{$Group} / {$Title} : {$Description}';
$FeedFmt['rss']['item']['description'] = '$LastModifiedSummary';

Bemerkungen:

  • Sie müssen diese Zeilen für jeden Typ (atom, rdf,dc), den Sie anbieten wollen, wiederholen.
  • Das RSS-'descriptionTag ist nicht äquivalent zu der PmWiki'$Description''-Variable, ungeachtet der verwirrenden Ähnlichkeit.

Einige meiner passwortgeschützten Seiten erscheinen nicht im Feed... wie umgehe ich das?

Pms Antwort auf eine ähnliche Frage in der Newsgroup:

Beim letzten Mal, als ich das überprüft habe, hatten RSS und andere Syndication-Protokolle kein wohl etabliertes Interface oder Mechanismen für die Durchführung von Zugriffkontrollen (d. h. Authentifikation). So weit ich weiß, ist das noch immer der Fall.

PmWikis Web-Feed-Fähigkeiten ist auf Seitenlisten aufgebaut, so ist es gut möglich, das die $EnablePageListProtect-Option das Erscheinen einer aufgefrischten Seite verhindert. Sie könnten versuchen, $EnablePageListProtect=0; zu setzen und zu schauen, ob die passwortgeschützte Seite erscheint.

Die "Kehrseite" zum Setzen der Variablen $EnablePageListProtect auf null ist, dass jeder, der eine Suche in Ihrer Site durchführt, die Existenz der Seiten in dem gesperrten Abschnitt erfährt. Die Seiten wird niemand lesen können, aber sie wissen, sie sind da!

Sie könnten $EnablePageListProtect nur für ?action=rss auf null setzen:

    if ($action == 'rss') $EnablePageListProtect = 0;

Das schränkt die Möglichkeit, geschützte Seiten zu sehen, auf die RSS-Feeds ein. Normale Seitenlisten und Suchergebnisse sehen diese Seiten nicht.

Letztlich ist es auch möglich, das Web-Feed so zu konfigurieren, dass es die Authentifikations-Informationen direkt aus dem URL bezieht, wie in

    .../Site/AllRecentChanges?action=rss&authpw=secret

Der große Nachteil ist, dass das Passwort im Klartext mit jedem RSS-Aufruf durch das Netz wandert und endet darin, dass es in Apaches Access-Logs gespeichert wird.

Wie fügt man Feed-Bilder hinzu?

Fügen Sie diese Zeilen in Ihre local/config.php-Datei ein (das Beispiel ist für ?action=rss):

$FeedFmt['rss']['feed']['image'] =
" <title>Logo title</title>
 <link>http://example.com/</link>
 <url>http://example.com/images/logo.gif</url>
 <width>120</width>
 <height>60</height>";
Vergessen Sie nicht, NICHT mit einem "<" zu beginnen (sondern mit einem Leerzeichen), da es sonst kein <image>-Tag darumherum gäbe... siehe hier.

Wie füge ich RRS-News-Feeds in eine PmWiki-Seite ein?

See Cookbook:RssFeedDisplay.

Wie kann ich Standard-Feed-Optionen in einer Konfigurationsdatei setzen anstatt dass ich sie jedesmal in den URL setze?

Wenn Sie zum Beispiel ?action=rss standardmäßig zu ?action=rss&group=News&order=-time&count=10 machen wollen, fügen Sie diese Zeilen in Ihre local/config.php-Datei ein:

   if ($action == 'rss')
     SDVA($_REQUEST, array(
       'group' => 'News',
       'order' => '-time',
       'count' => 10));

Gibt es Wege, wie Besucher leicht ein Web-Feed abonnieren können?

In einigen Browser (Mozilla Firefox) können Besucher ein orangenes RSS-Icon in der Adresszeile sehen und abonnieren den Feed, indem sie darauf klicken. Um RSS-Icons zu aktivieren, fügen Sie diese Zeilen in Ihre local/config.php-Datei ein:

$HTMLHeaderFmt['feedlinks'] = '<link rel="alternate" type="application/rss+xml" 
  title="$WikiTitle" href="$ScriptUrl?n=Site.AllRecentChanges&amp;action=rss" />
<link rel="alternate" type="application/atom+xml" title="$WikiTitle"
  href="$ScriptUrl?n=Site.AllRecentChanges&amp;action=atom" />';

Sie können auch einen solchen Verweis zum Beispiel in ihre SideBar setzen: [[Site.AllRecentChanges?action=atom | Subscribe to feed]].

Kann ich ein RSS-Feed für einzelne Seiten-Versionen erzeugen?

See Cookbook:PageFeed.

Wie erzeuge ich eine Feed-Seite ähnlich wie RecentChanges oder AllRecentChanges, die aber nur bestimmte Gruppen oder Seiten enthält?

Siehe Cookbook:CustomRecentChanges. In Kürze: Sie deklarieren eine $RecentChangesFmt-Variable mit Ihren bevorzugten Feed-Seite und kleiden sie in eine Bedingung Ihrer Wahl ein. Zum Beispiel:

   if (PageVar($pagename, '$Group')!='ForbiddenGroup') {
     $RecentChangesFmt['Site.MyFeedPage'] =
       '* [[{$FullName}]]  . . . $CurrentTime $[by] $AuthorLink: [=$ChangeSummary=]';
   }

Wie kann ich mein RSS-Feed updaten, um jede Änderung an einer Seite zu zeigen und nicht nur neu erzeugte Seiten?

Fügen Sie einen einzigartigen GUID-Verweis für jede Änderung in Ihre local/config.php-Datei ein (siehe PITS-Eintrag):

   $FeedFmt['rss']['item']['guid'] = '{$PageUrl}?guid=$ItemISOTime';

Alternativ können Sie die Option für Änderungsüberwachungen erzeugen, indem sie einen Qualifier für RSS-Links hinzufügen. Das erlaubt den Besuchern zwischen Standard-neue Seiten-RSS-Feeds und neue Änderungen-RSS-Feeds zu wählen (in PmWiki ist diese Option aktiviert):

   ## For new pages updates: http://example.com/wiki/HomePage?action=rss
   ## For edits updates: http://example.com/wiki/HomePage?action=rss&edits=1
   if(@$_REQUEST['edits'] && $action == 'rss')
     $FeedFmt['rss']['item']['guid'] = '{$PageUrl}?guid=$ItemISOTime';

Wikifarmen

Wie kommt es, dass ich meine Autorisierung behalte, wenn ich in ein anderes Wiki innerhalb der Farm wechsle?

PmWiki nutzt PHP-Sessions um Autentifikations- und Autorisierungsinformationen zu behalten und per Standard richtet PHP die Dinge so ein, dass alle Interaktionen mit dem gleichen Server als Teil der gleichen Sitzung (Session) angesehen werden.

Ein einfacher Weg, das zu bereinigen, ist sicherzustellen, dass jedes Wiki einen eigenen Cookienamen für seine Sessionidentitität benutzt. Nahe des Anfangs einer local/config.php-Datei eines Wikis, bevor "authuser" oder irgend ein anderes Rezept aufgerufen wird, fügen Sie eine Zeile wie die folgende ein:

session_name('XYZSESSID');

Sie können irgend einen alphanumerischen Namen für XYSESSID einsetzen, für ein Wiki "cs559-1" würden Sie vielleicht dies wählen:

session_name('CS559SESSID');

Das wird die Sitzungen unabhängig voneinander halten.

Beantwortete Fragen

Warum verwenden wir kein Forum statt dieser "AQ" Seite?

Weil Foren (BBS) eher für Diskussionen geeignet sind als um Ergebnisse festzuhalten.

Warum soll man die Antwort nicht auf eine Seite schreiben, die zur Frage gehört?

Sollst Du. Aber wenn Du nicht so recht weißt, wohin mit der Information, schreibe sie hierhin. Diese Seite stellt wenigstens einen Platz zur Verfügung, bis die Antwort an die richtige Stelle verschoben wird. In der Zwischenzeit kann man die Antwort wenigstens hier finden.

Anmerkungen zum Aufbau

Warum nutzt PmWiki keine hierarchischen / verschachtelten Gruppen?

Die Frage bricht herunter auf die Frage, wie man mit Seitenverweisen zwischen verschachtelten Seiten umgehen könnte. Wenn jemand einen offensichtlichen, intuitiven Weg findet, wie Autoren Verweise setzen könnten, werden verschachtelte Gruppen plausibel. Siehe Anmerkungen zum Aufbau und Hierarchische Gruppen.

Warum haben PmWikis Skripten kein schließendes ?> Tag?

Allen PmWiki-Skripten fehlt jetzt ein schließendes ?> Tag. Das Tag ist nicht erforderlich und der Wegfall vermeidet Probleme mit nicht wahrgenommenen Leerzeichen oder leeren Zeilen am Dateiende. Außerdem könnten einige FTP-Programme das/die Zeilenendezeichen in der Datei verändern, was ebenso zu Problemen führen kann. Siehe auch die Abgrenzung von Anweisungen-Seite im PHP-Handbuch.

Unterstützt PmWiki WYSIWYG-Bearbeiten (oder etwas wie den FCKEditor}?

Kurze Antwort: PmWiki unterstützt GUI-Schaltflächen für die gängigen Formatierungen, hat aber andererseits keinen WYSIWYG-Editor. Die Gründe dafür stehen in WYSIWYG.

für die Liste aller Seiten

< Beantwortete Fragen | Dokumentations-Index | FAQ-Kandidaten >


Übersetzung von PmWiki.FAQ,   Originalseite auf PmWikiDe.FAQ   —   Backlinks

Zuletzt geändert:   PmWikiDe.FAQam 08.02.2021
 PmWiki.FAQam 10.09.2011
Page last modified on February 08, 2021, at 01:46 PM