Lexer->addSpecialPattern('~~RAGASKER~~', $mode, 'plugin_ragasker'); // 用于测试搜索功能的语法 $this->Lexer->addSpecialPattern('~~RAGASKER:Search:.*~~', $mode, 'plugin_ragasker'); } public function handle($match, $state, $pos, Doku_Handler $handler) { // 只传递唯一ID用于渲染 $uniqid = uniqid('ragasker_', true); if (preg_match('/~~RAGASKER:Search:([A-Za-z0-9_]+)~~/', $match, $m)) { // 解析参数 $param = $m[1]; return [$uniqid, 'searcher', $param]; } return [$uniqid, 'asker', null]; } public function render($mode, Doku_Renderer $renderer, $data) { if($mode !== 'xhtml') return false; list($uniqid, $type, $param) = $data; if ($type === 'searcher') { return $this->renderSearcher($renderer, $param); } else { return $this->renderAsker($renderer, $uniqid); } } private function renderSearcher($renderer, $param) { $processor = new SearchHelper(); $lists = $processor->exampleUsage($param); $linkList = $lists['links']; $contentList = $lists['contents']; $searchList = ''; if (is_array($linkList) && count($linkList) > 0) { $searchList = '
$1', $text);
// 转换换行
$text = nl2br($text);
return $text;
}
}