我正在尝试将MediaWiki的页面标题与皮肤中的某个值进行比较。页面标题可以使用:
输出<?php $this->text('title') ?>
这样可以输出页面标题(在本例中为“主页”),但不允许我将值与任何内容进行比较,例如:
<?php if ($this->text('title') == "Main Page") { echo "You are on the Main Page!"; } ?>
这将输出“主页”,而不是“你在主页面上!”
对此的修复是使用$ this-&gt;数据而不是$ this-&gt; text,但$ this-&gt; data('title')未在MediaWiki中定义。如何将$ this-&gt; text的输出转换为可以比较的变量,而不会向用户回应任何内容?
答案 0 :(得分:2)
$ this-&gt; text('title')不会返回页面标题。相反,它将标题回显到皮肤模板中。您可以通过查看text()函数的代码来验证这一点。
您需要的是$ this-&gt; data ['title']。
$ this-&gt;数据是一个数组,因此$ this-&gt; data('title')在语法上是不正确的。
答案 1 :(得分:0)
您可以使用PHP的输出缓冲功能捕获它,例如:
ob_start();
$this->text('title');
$title = ob_get_clean();
if($title == 'Main Page') {...}
虽然几乎肯定有办法直接获得它。我对MediaWiki没有任何经验,但在OutputPage
课程中看起来有一些有用的方法,例如: getPageTitle()
。还有一个Title
类。
答案 2 :(得分:0)
您可以使用Output Buffering获取$this->text('title')
例如:
ob_start();
$this->text('title');
$title = ob_get_clean();