Anchor PlugIn
Das Anchor PlugIn legt Linkziele fest, die später von anderen Seiten direkt angesprungen werden können.
Dabei funktioniert das zugehörige Icon gleichzeitig als Permalink-Quelle, so daß (auf »dritten« Webseiten) das Linkziel auch per Copy & Paste eingefügt werden kann.
Syntax
<ANCHOR:name>
Der name muß mit einem Buchstaben (keine Umlaute) beginnen und darf auch nur die Buchstaben von a..z und die Ziffern von 0..9 beinhalten.
Zur Zeit wird das Linkziel mit einem kleinen
Wimpel markiert, ein passenderes Icon wird noch gesucht.
Quellcode
<?php /** <?php /** * Plugin anchor: Creates a anchor to your document. * * @license GPL 2 (http://www.gnu.org/licenses/gpl.html) * @author Jörg Kantel <joerg@kantel.de> * based on the bookmark plugin by * Otto Vainio <bookmark.plugin@valjakko.net> */ if(!defined('DOKU_INC')) define('DOKU_INC',realpath(dirname(__FILE__).'/../../').'/'); if(!defined('DOKU_PLUGIN')) define('DOKU_PLUGIN',DOKU_INC.'lib/plugins/'); require_once(DOKU_PLUGIN.'syntax.php'); /** * All DokuWiki plugins to extend the parser/rendering mechanism * need to inherit from this class */ class syntax_plugin_anchor extends DokuWiki_Syntax_Plugin { /** * return some info */ function getInfo(){ return array( 'author' => 'Jörg Kantel', 'email' => 'joerg@kantel.de', 'date' => '2008-24-06', 'name' => 'anchor plugin', 'desc' => 'Creates a anchor to your document', 'url' => 'http://www.cognitiones.de/', ); } /** * What kind of syntax are we? */ function getType(){ return 'substition'; } function getSort(){ return 357; } function connectTo($mode) { $this->Lexer->addSpecialPattern('<ANCHOR:\w+>',$mode,'plugin_anchor'); } /** * Handle the match */ function handle($match, $state, $pos, &$handler){ $match = substr($match,8,-1); //strip <ANCHOR: from start and > from end return array(strtolower($match)); } /** * Create output */ function render($mode, &$renderer, $data) { if($mode == 'xhtml'){ $renderer->doc .= '<a name="' . $data[0] . '" id="' . $data[0]. '"></a><a href="#' . $data[0] . '" title="' . $data[0].'"><img src="http://www.schockwellenreiter.de/images/wimpel.gif" width="24" height="15" border="0" alt="anchor sign"></a>'; return true; } return false; } } ?>
Installation
Den Quellcode in eine Datei kopieren, die Ihr syntax.php nennt. Dann legt bitte einen Ordner anchor im Verzeichnis lib/plugins Eurer Doku-Wiki-Installation an und kopiert die syntax.php dort hinein. Und schon steht Euch das PlugIn zur Verfügung.
Beispiel
Folgender Quelltext
Wir gehen hier direkt zum [[Notizblock#panzerkreuzer|Panzerkreuzer Potemkin]] auf der [[Notizblock]]-Seite.
wird zu:
Wir gehen hier direkt zum Panzerkreuzer Potemkin auf der Notizblock-Seite.
Die per Copy & Paste eingefügte URL funktioniert aber genau so:
Wir gehen auch hier direkt zum [[http://www.cognitiones.de/doku.php/notizblock#panzerkreuzer|Panzerkreuzer Potemkin]] auf der [[Notizblock]]-Seite.
Wir gehen auch hier direkt zum Panzerkreuzer Potemkin auf der Notizblock-Seite.
Allerdings behandelt dann das DokuWiki den Link als »externen Link«. Besser ist es daher (für Links innerhalb des Wikis), nur den Linktext nach dem letzten Querstrich zu verwenden, also:
Wir gehen auch hier direkt zum [[notizblock#panzerkreuzer|Panzerkreuzer Potemkin]] auf der [[Notizblock]]-Seite.
Das ergibt dann wieder das Gewünschte:
Wir gehen auch hier direkt zum Panzerkreuzer Potemkin auf der Notizblock-Seite.
Caveats
Zur Zeit liegt das Icon noch auf meinem Server und ist fest im Quellcode verdrahtet. Das sollte ich bei Gelegenheit ändern.
Werbung