1

我正在尝试将页面标题与 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 的输出转换为可以进行比较而不向用户回显任何内容的变量?

4

3 回答 3

2

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

你需要的是 $this->data['title']。

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

于 2013-09-28T20:54:07.713 回答
0

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

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

if($title == 'Main Page') {...}

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

于 2013-09-24T03:35:37.807 回答
0

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

例如:

ob_start();
$this->text('title');
$title = ob_get_clean();
于 2013-09-24T03:35:45.747 回答