register_hook('INDEXER_PAGE_ADD', 'BEFORE', $this, 'handle_indexer', ['priority' => 100]); } public function handle_indexer(Doku_Event $event, $param) { $pageId = $event->data['page']; $helper = plugin_load('helper', 'yatp'); $text = rawWiki($pageId); if (!preg_match_all('/\{\{template>([^#|}]+)(?:\|([^#}]*))?(?:#([^\}]+))?\}\}/', $text, $matches, PREG_SET_ORDER)) { return; } p_set_metadata($pageId, [ 'relation' => [ 'references' => [] ] ], false, true); $metadata = p_get_metadata($pageId, 'relation'); $existingRefs = isset($metadata['references']) ? $metadata['references'] : []; foreach ($matches as $match) { $templateName = $match[1]; $templateId = $helper->getTemplateFile($templateName); if (!$templateId) continue; $rawFile = $helper->getTemplate($templateId); if (!$rawFile) continue; $replacers = $helper->messageReplacers(preg_split('/(? [ 'references' => $existingRefs ] ], true, true); idx_get_indexer()->addMetaKeys($pageId, 'relation references', $existingRefs); } }