来自媒体维基模板的皮肤中的元标记



假设我的MediaWiki中有一个模板,例如

<includeonly>
<div id="custom-person">
* <span>Birthday:</span> {{#if: {{{birth date|}}} | <b>{{#ol-time:|{{{birth date}}}}}</b> | — }}
{{#if: {{{full name|}}} | * <span>full name:</span> <b>{{{full name}}}</b>}}
{{#if: {{{birth place|}}} | * <span>birth place:</span> <b>{{{birth place}}}</b>}}
{{#if: {{{age|}}} | * <span> age:</span> <b>{{{age}}}</b>}}
{{#if: {{{nationality|}}} | * <span> nationality:</span> <b>{{{nationality}}}</b>}}
<div class="clear"></div>
</div>
[[Category:Person]]
__NOTOC__
</includeonly>

所有这些页面都位于一个命名空间 (0( 中。

我需要使用此模板中的数据生成头部元标记。

我想出了如何过滤这样的页面并在我的 SkinPerson 中添加标题标签.php

if ( $out->getTitle()->getNamespace() == 0 ) {
$out->addMeta( "description", $out->getPageTitle());
$out->addHeadItem( 'og:description', '<meta property="og:description" content="' . $out->getPageTitle() . '">');
}

但我真的纠结于如何插入"og:description"标签,例如 {{{全名}}} + {{{年龄}}} ?

这根本不可能,我想知道你在这里的用例是什么,你为什么要这样做。首先解释一下,为什么以您想要实现的方式无法做到这一点:

该模板由我们称为解析器的软件进行评估。解析器正在生成您的wiki文本的html表示,包括所有模板等。然后,其结果保存在解析器输出中,并可能缓存在解析器缓存中(因此不是每次都需要再次解析(。

但是,要添加头项的皮肤直接使用解析器的输出,因此它不再真正了解wiki文本(包括模板参数(,也不应该。

对于您想要实现的目标,一个可能的解决方案可能是通过提供标签扩展来扩展wiki文本标记语言,在解析wiki文本期间解析该扩展,并将头项的值保存在数据库中。在页面输出期间,您可以再次从数据库中检索这些值,并根据需要将它们添加到头项中。有关此内容的详细信息,请参阅文档。

除了数据库之外,可能还有其他方法可以将信息从解析时间获取到输出时间,我不知道。

相关内容

  • 没有找到相关文章

最新更新