1<?php 2/** 3 * DokuWiki Plugin headerfooter (Action Component) 4 * 5 * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html 6 * @author Li Zheng <lzpublic@qq.com> 7 */ 8 9// must be run within Dokuwiki 10if(!defined('DOKU_INC')) die(); 11 12class action_plugin_headerfooter extends DokuWiki_Action_Plugin { 13 public function register(Doku_Event_Handler $controller) { 14 15 $controller->register_hook('PARSER_WIKITEXT_PREPROCESS', 'AFTER', $this, 'handle_parser_wikitext_preprocess'); 16 17 } 18 public function handle_parser_wikitext_preprocess(Doku_Event &$event, $param) { 19 global $INFO; 20 if ($INFO['id'] != '') return; // 发现每页会执行两次,当id为空时是真正的文本,否则是菜单。 21 $inf = pageinfo(); 22 $inf['namespace'] = urlencode(str_replace(array(' ', '%', '&'), '_', $inf['namespace'])); 23 $ns = str_replace(':', '/', $inf['namespace']) . '/'; 24 $base = str_replace('\\', '/', DOKU_INC) . 'data/pages/' . $ns; // 得到文件绝对路径 25 file_put_contents('tt.txt','abc'); 26 if (file_exists($base . '_header.txt')){ // 存在头文件 27 $header = file_get_contents($base . '_header.txt'); 28 if ($this->getConf('separation') == 'paragraph'){ // 如果使用段落来分割 29 $header = rtrim($header, " \r\n\\") . "\n\n"; 30 } 31 $event->data = $header . $event->data; 32 } 33 if (file_exists($base . '_footer.txt')){ // 存在尾文件 34 $footer = file_get_contents($base . '_footer.txt'); 35 if ($this->getConf('separation') == 'paragraph'){ // 如果使用段落来分割 36 $footer = "\n\n" . ltrim($footer, " \r\n\\"); 37 } 38 $event->data .= $footer; 39 } 40 } 41} 42