MediaWiki模板皮肤中的元标记

MediaWiki模板皮肤中的元标记,mediawiki,mediawiki-templates,skins,Mediawiki,Mediawiki Templates,Skins,假设我在MediaWiki中有一个模板,比如 <includeonly> <div id="custom-person"> * <span>Birthday:</span> {{#if: {{{birth date|}}} | <b>{{#ol-time:|{{{birth date}}}}}</b> | — }} {{#if: {{{full name|}}} | * <span>full name:<

假设我在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>

*生日:{{{if:{{{birth date}}}{{{ol time:{{{birth date}}}}{124;-}
{{{#if:{{{{full name}}}}{124;*全名:{{{{full name}}}
{{{如果:{{{出生地}}}}*出生地:{{{{出生地}}
{{{if:{{age}}}*age:{{{age}}
{{{如果:{{{国籍}}}}*国籍:{{{{国籍}}
[[类别:人]]
__诺塔克__
所有这些页面都位于一个命名空间(0)中

我需要用这个模板中的数据生成头部元标记

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

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

但是我真的被困在如何插入,比如说,'og:description'标记像{{{{{{full name}}}+{{{{age}}}}?

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

模板由一个我们称之为解析器的软件进行评估。解析器正在生成wikitext的html表示,包括所有模板等。然后,其结果保存在ParserOutput中,并可能缓存在ParserCache中(因此,并非每次都需要再次对其进行解析)

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

您想要实现的一个可能的解决方案可能是通过提供标记扩展来扩展wikitext标记语言,在wikitext解析过程中解析标记扩展,并将标题项的值保存在数据库中。在页面输出过程中,您可以再次从数据库中检索这些值,并将它们添加到所需的标题项中。有关详细信息,请参阅中的


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

谢谢您的回复!目前,我已经创建了一个小型扩展,它解析html,然后向头部添加元标记。