在MediaWiki中调用另一个钩子函数中的钩子



大家好,我是MediaWiki的新手,正在尝试构建自己的扩展。使用这个扩展,我试图显示一些内容吹页标题,但只到特定于一个类别的页面。

为此,我使用两个钩子:

  1. onArticleViewHeader(将我的HTML内容添加到页面标题下方)
  2. onOutputPageMakeCategoryLinks(获取正在加载的页面的所有类别)

从第一个钩子开始,我可以使用以下代码显示我的内容:

public static function onArticleViewHeader( &$article, &$outputDone, &$pcache ) {
$article->getContext()->getOutput()->addHTML("Printed from a hook");            
}

上面的代码打印每个页面标题下面的HTML,但我想加载HTML只到一个特定的页面类别。因此,我尝试加载类别并且只在类别被捕获时才调用第一个钩子。

public static function onOutputPageMakeCategoryLinks( &$out, $categories, &$links ) {
foreach($categories as $category){
if($category=="my_page_category"){
MyExtentionClass::onArticleViewHeader();
}
}
}

我知道我调用钩子的方式不好,这是不正确的。但是我只是想从我的第二个钩子里面调用我的第一个钩子'onArticleViewHeader',这样我就可以把我的HTML只打印到一个特定类别的页面。

在标题钩子中使用$article->getPage()->getCategories()

我还没有真正得到我所问问题的确切答案,但已经找到了解决我所面临的问题的出路。

我只是试着在"onArticleViewHeader"使用MediaWiki的一些全局变量。


global $wgOut;
$title = Title::newFromText( $wgOut->getPageTitle() );
$categories = $title->getParentCategories();
if(isset($categories['Category:my_cat_name']){
//formed my logic here
}

这可能会对其他面临这种问题的人有所帮助。

最新更新