DokuWiki

It's better when it's simple

User Tools

Site Tools


plugin:anchor

anchor Plugin

Compatible with DokuWiki

  • 2013-12-08 "Binky" yes
  • 2013-05-10 "Weatherwax" yes
  • 2012-10-13 "Adora Belle" unknown
  • 2012-01-25 "Angua" yes

plugin Add HTML anchors to a page. Useful when section headers are really long.

Last updated on
2013-05-23
Provides
Syntax

Similar to bookmark, maplink

Tagged with anchor, bookmark, links, sample

Normally, you can only link to a wiki page, or a specific section header. This is impractical when header names are long, or you expect that they might change. This plugin lets you create links to any part of your page.

This plugin is also a useful sample, if you're having trouble figuring out how to create a syntax plugin.

Installation

This plugin is so simple, and I'm so lazy, that I'm just going to include the source code. The following text should be in the file “lib/plugins/anchor/syntax.php”

lib/plugins/anchor/syntax.php
<?php
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');  
 
class syntax_plugin_anchor extends DokuWiki_Syntax_Plugin {
    function getType() {return 'substition';}
    function getPType() {return 'block';}
    function getSort() {return 167;}
    function getInfo() {return array('author' => 'Eli Fenton', 'name' => 'Anchor Plugin', 'url' => 'http://dokuwiki.org/plugin:anchor');}
    function connectTo($mode){
        $this->Lexer->addSpecialPattern('\{\{anchor:[^}]*\}\}', $mode, 'plugin_anchor');
    }
 
    function handle($match, $state, $pos, &$handler) {
        return explode(':', substr($match, strlen('{{anchor:'), -2));
    }
 
    function render($mode, &$renderer, $data) {
        $renderer->doc .= '<a name="' .htmlspecialchars($data[0]) . '">' .htmlspecialchars($data[1]) . '</a>';
    }
}

Examples/Usage

Here's how you create an anchor:

{{anchor:anchor_name:text}}

The anchor_name part is the name of the anchor to use in links. The text part is optional, and, for the most part, not very useful. It lets you wrap the anchor around a specific piece of text.

To link to an anchor from within DokuWiki:

[[namespace:page_name#anchor_name]]

To link to an anchor from outside DokuWiki:

http://server.com/doku/doku.php?id=page_name#anchor_name

Changelog

  • 2013-05-23 Integrated changes made by Peter B to fix escaping vulnerability and paragraph formatting.

Discussion

Compatible with "Anteater"

In my opinion, it works fine with Anteater :-)
AlekS

Compatible with "Angua"

Works also with “Angua” — aleksaleks

2012/01/10 09:48

Jumps to top of the page

I put an anchor at the bottom of a page.
If I use this internal link, DW jumps to the top of the page.
Isn't it possible to jump to the part of the page, where the anchor is defined?27.08.2013, Joe

/exe/fetch...

I created the plugin files and tried to create a link.
Instead of creating an anchor is makes a link to /lib/exe/fetch.php?media=anchor:anchor_name:text
What am I doing wrong?
EDIT: My bad, I was using the syntax incorrectly! :) Great work!
2013/11/03/ 01:56 Stephen V

Abbreviated use in page

Just to tell that it works fine and mostly to tell that even the short notation for the anchor works.
This makes the anchors within the page independent of the source page.
example [[#anchorName|text]]
Great!!
ViForEver 20140207

Hello, in my private wiki it does not work. How i have to create an anchor and an anchor-goal? Please give me an example!

Old Discussion

plugin/anchor.txt · Last modified: 2014/02/23 12:12 by 91.113.79.71