|
PmWikiDe /
Eigene Auszeichnungen(deutsche Übersetzung der Seite PmWiki.CustomMarkup, Stand 28.09.2005) Administratoren (Fortgeschritten) EinleitungDie Auszeichnungsumwandlung wird bei PmWiki durch einzelne Regeln gesteuert. Jede Regel definiert eine bestimmte Zeichenkette, nach der der Wikitext zuerst durchsucht wird. Anschließend werden die gefunden Stellen durch einen anderen Text ersetzt. Intern wird dazu die PHP Funktion "preg_replace" verwendet. Zusätzliche Regeln werden in PmWiki mit der PmWiki Funktion Markup() bekannt gemacht. Diese sieht folgendermaßen aus: Markup($name, $wann, $muster, $ersetzung);
Wobei mit Als Beispiel hier der Programmcode, der die Regel für Markup("em", "inline", "/''(.*?)''/", "<em>$1</em>");
Diese Anweisung erstellt eine Regel, die "em" heißt, welche zusammen mit anderen "inline" Auszeichnungen ausgeführt wird. Die Regel ersetzt den Text innerhalb doppelter, einfacher Anführungszeichen durch den selben Text ($1), jedoch eingeschlossen von Die ersten beiden Parameter von Markup() legen die Reihenfolge der Anwendung fer Regeln fest. Der erste Parameter gibt der Regel einen Namen -- " Der zweite Parameter sagt, dass die Regel zusammen mit anderem "inline" Auszeichnungen bearbeitet werden soll. PmWiki erledigt den Übersetzungsvorgang in mehreren Phasen: _begin Begin der Umwandlung fulltext Verarbeitung des gesamten Eingabetextes split Zerteilen des Eingabetextes in einzelne, zu verarbeitende Zeilen directives Verarbeitung von Direktiven inline Übersetzung von im Text auftauchenden Auszeichnungen links Übersetzung von Verweisen, Internetadressen und Wikiwörtern block Übersetzung von Block-Auszeichnungen style Umsetzung von Stilen _end Ende der Umwandlung Die Angabe "inline" als zweiter Parameter bedeutet somit, dass die Regel zusammem mit anderen "inline" Regeln verarbeitet wird. oll die Regel dagegen zusammen mit den Direktiven verarbeitet werden, müsste man "directives" als zweiten Parameter angeben. Der dritte Parameter ist ein Perl-kompatibler regulärere Ausdruck. Genaugenommen ist es ein Schrägstrich, ein regulärere Ausdruck, ein weiterer Schrägstrich und (optional) einige Modifikatoren. Das Beispiel verwendet das Suchmuster Der vierte Parameter ist der Ersetzungstext, der anstatt des des kompletten Suchmusters (Auszeichnung und Wikitext) angezeigt werden soll. Man kann In diesem Beispiel wird BeispieleHier die Regel für Markup("@@", "inline", "/@@(.*?)@@/", "<code>$1</code>");
und für eine Markup("comment", "directives", "/\\(:comment .*?:\\)/", '');
Aber wie funktioniert das bei der Markup("strong", "<em", "/'''(.*?)'''/", "<strong>$1</strong>");
Dies erzeugt eine Regel mit Namen "strong" und der zweite Parameter "<em" legt fest, dass die Regel vor der weiter oben gezeigten "em" Regel verarbeitet werden soll. Um etwas nach der "em"-Regel auszuführen, würde man stattdessen ">em" verwenden. Damit ist es möglich, an jeder Stelle der Umwandlung der Auszeichnungen Erweiterungen vorzunehmen. (Genaugenommen sind "inline", "block", "directives" usw. nur Platzhalter um den Gesamtablauf zu strukturieren, so dass andere Regeln an passender Stelle eingefügt werden können. So kann etwa "<inline" benutzt werden, damit eine Regel vor anderen "inline" Regeln angewendet wird.) Es ist auch möglich, das vordefinierte Auszeichnungen abzuschalten: Markup("strong", "<em");
Das Fehlen eines Parameters für das Muster und den Ersatztext zeigt an, dass man diese Auszeichnung nicht mehr verwenden möchte. Die vordefinierten Auszeichnungen von PmWiki sind in scripts/stdmarkup.php definiert. Um die gesamte Ersetzungstabelle während der Programmausführung auszugeben, gibt es das Modul scripts/diag.php das die Aktion " Weitere BeispieleAufruf einer eigenen Funktion, die etwas zurückliefertDie Option 'e' beim Parameter Die Auszeichnung (:meeting:) tut das indem eine theoretische, globale Funktion meeting() aufgerufen wird (z.B. in Markup('meeting', 'directives', '/\\(:meeting:\\)/e', 'meeting()');
Die Option 'e' ist eine Standardoption von Einfache Makro-Ersetzung:Markup('bigP', 'fulltext', '/\{bigP\}/', '%font-size="40px"% P' . '%block font-size="15px" border="0px" ' . 'padding="4px 14px 7px 14px" bgcolor=#FFB% '); Diese Regel wird in der fulltext Phase bearbeitet und ersetzt die Auszeichnung {bigP}ie Jesu Domine, dona eis requiem (''whack''). diesen Effekt: P ie Jesu Domine, dona eis requiem (whack). das Hinzufügen eines Arguments (wie hier bei Google Suche ins Wiki einbauenDeutsches Beispiel, Gleiches Fenster Fügen Sie nachfolgenden Text am Ende der Datei config.php ein Markup('googlesearch', 'directives', '/\\(:googlesearch:\\)/e',"Keep(\" <FORM method=GET action='http://www.google.de/search'> <TABLE><tr><td> <A HREF='http://www.google.de'> <IMG SRC='http://www.google.de/logos/Logo_40wht.gif' border='0' ALT='Google' align='absmiddle'></A> <INPUT TYPE=text name=q size=20 maxlength=255 value=''> <INPUT TYPE=hidden name=hl value=de> <INPUT type=submit name=btnG VALUE='Google Search'> </td></tr></TABLE> </FORM> \")"); Schreiben Sie nun (:googlesearch:) irgendwo in Ihre Seite. --newmy Sichere Google Suche in neuem Fenster in das Wiki einbauenEnglisches Beispiel, Sichere Suche in neuem Fenster Fügen Sie nachfolgenden Text am Ende der Datei config.php ein Markup('googlesearch', 'directives', '/\\(:googlesearch:\\)/e',"Keep(\" <FORM method=GET action='http://www.google.com/search' target='_blank'> <TABLE><tr><td> Google Safe Search <A HREF='http://www.google.com/search?safe=vss'></A> <INPUT TYPE=text name=q size=42 maxlength=255 value=''> <INPUT type=hidden name=safe value=strict> <INPUT type=submit name=sa value='Google Search'> </td></tr></TABLE> </FORM> \")"); Schreiben Sie nun (:googlesearch:) irgendwo in Ihre Seite. --Jeff, Corpus Christi, Texas Standardsuche im englischen Google - Neues Fenster mit Ergebnissen Fügen Sie nachfolgenden Text am Ende der Datei config.php ein Markup('googlesearch', 'directives', '/\\(:googlesearch:\\)/e',"Keep(\" <FORM method=GET action='http://www.google.com/search' target='_blank'> <input type=hidden name=ie value=UTF-8> <input type=hidden name=oe value=UTF-8> <TABLE bgcolor='#FFFFFF'><tr><td> <A HREF='http://www.google.com/'> <IMG SRC='http://www.google.com/logos/Logo_40wht.gif' border='0' ALT='Google' align='absmiddle'></A> <INPUT TYPE=text name=q size=25 maxlength=255 value=''> <INPUT type=submit name=btnG VALUE='Google Search'> </td></tr></TABLE> </FORM> \")"); Schreiben Sie nun (:googlesearch:) irgendwo in Ihre Seite. --Jeff, Corpus Christi, Texas Lokale Wetterinformationen hinzufügen Fügen Sie nachfolgenden Text am Ende der Datei config.php ein Markup('localweather', 'directives', '/\\(:localweather:\\)/e',"Keep(\" <script src='http://voap.weather.com/weather/oap/78410?template=GENXV&par=null&unit=0&key=021c5b063db71b7fdd9a11f5ec88c033'></script> \")"); Jetzt kann man irgendwo im Text (:localweather:) unterbringen. --Jeff, Corpus Christi, Texas Hinweis: Man muss http://www.weather.com aufrufen, um die Skriptzeile zu erhalten, die obige Skriptzeile ersetzt. Fügen Sie dei Skripzeile zwischen: Markup('localweather', 'directives', '/\\(:localweather:\\)/e',"Keep(\" und \")"); ein. << InterMap anpassen | Dokumentationsindex | Eigene Wikistile >> |