register_hook('TPL_ACT_RENDER', 'BEFORE', $this, 'handle_act_render', array()); $controller->register_hook('RENDERER_CONTENT_POSTPROCESS', 'AFTER', $this, 'handle_renderer_content_postprocess', array()); } /** * Make sure the other toc is not printed */ function handle_act_render(&$event, $param) { global $ID; global $INFO; if (p_get_metadata($ID, 'movetoc')) { $INFO['prependTOC'] = false; } } /** * Replace our placeholder with the actual toc content */ function handle_renderer_content_postprocess(&$event, $param) { global $TOC; global $lang; if ($TOC) { $html = '
'.$lang['toc'].'' . html_buildlist($TOC, 'intoc', array($this, 'html_list_intoc')) . '
'; $event->data[1] = str_replace('', $html, $event->data[1]); } } /** * Callback for html_buildlist. * Builds list items with intoc printable class instead of dokuwiki's toc class which isn't printable. */ function html_list_intoc($item){ if(isset($item['hid'])){ $link = '#'.$item['hid']; }else{ $link = $item['link']; } return ''. hsc($item['title']).''; } }