*/ class syntax_plugin_pagetitle_youarehere extends DokuWiki_Syntax_Plugin { /** syntax type */ public function getType() { return 'substition'; } /** paragraph type */ public function getPType() { return 'block'; } /** * Connect pattern to lexer */ protected $mode, $pattern; /** sort number used to determine priority of this mode */ public function getSort() { return 990; } public function preConnect() { // syntax mode, drop 'syntax_' from class name $this->mode = substr(__CLASS__, 7); //syntax patterns $this->pattern[5] = ''; } public function connectTo($mode) { $this->Lexer->addSpecialPattern($this->pattern[5], $mode, $this->mode); } /** * Handle the match */ public function handle($match, $state, $pos, Doku_Handler $handler) { global $ID; return $data = [$state, $match, $ID]; } /** * Create output */ public function render($format, Doku_Renderer $renderer, $data) { global $ID; static $helper; list($state, $match, $id) = $data; // skip calls that belong to different pages (eg. title of included page) if ($id !== $ID) return false; if ($format == 'metadata') { $renderer->meta['plugin']['pagetitle']['youarehere'] =+ 1; } elseif ($format == 'xhtml') { // load helper object isset($helper) || $helper = $this->loadHelper($this->getPluginName()); $renderer->doc .= DOKU_LF.$match.DOKU_LF; // html comment $renderer->doc .= '
'; $renderer->doc .= $helper->html_youarehere(1); // start_depth = 1 $renderer->doc .= '
'.DOKU_LF; } return true; } }