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