如何在MediaWiki中从$this>文本转换为$this->数据


How to convert from $this->text to $this->data in MediaWiki?

我正在尝试将页面的标题与MediaWiki皮肤中的某个值进行比较。可以使用以下命令输出页面标题:

<?php $this->text('title') ?>

这有效并将输出页面标题(在本例中为"主页"),但是它不允许我将值与任何内容进行比较,例如:

<?php if ($this->text('title') == "Main Page") { echo "You are on the Main Page!"; } ?>

这将输出"主页",而不是"你在主页上!

解决此问题的方法是使用$this->data而不是$this->text,但是$this->data('title')在MediaWiki中没有定义。如何将 $this->text 的输出转换为可以在不向用户回显任何内容的情况下进行比较的变量?

$this->text('title') 不返回页面的标题。相反,它会将标题回显到外观模板中。您可以通过查看 text() 函数的代码来验证这一点。

你需要的是$this>数据['title']。

$this->data是一个数组,因此$this->data('title')在语法上是不正确的。

您可以使用 PHP 的输出缓冲功能来捕获它,例如:

ob_start();
$this->text('title');
$title = ob_get_clean();
if($title == 'Main Page') {...}

尽管几乎可以肯定有一种方法可以直接获得它。我对MediaWiki没有任何经验,但是在OutputPage类中似乎有一些有用的方法,例如 getPageTitle() .还有一个Title课。

您可以使用输出缓冲来获取$this->text('title')

例如:

ob_start();
$this->text('title');
$title = ob_get_clean();