MediaWiki挂钩刷新文章加载脚本

时间:2014-09-17 07:49:18

标签: php mediawiki mediawiki-extensions

我有一个PHP脚本,在我的MediaWiki上显示员工列表。我还有一个特殊的页面,您可以在其中管理哪些用户是员工,这非常有效。但是,当您在特殊页面上进行后端更改时,更改不会显示在wikipage上,并在其中插入标记,直到您编辑该页面,并且不进行任何更改并保存。

这只能是因为我使用了错误的钩子。我尝试使用此挂钩,但它似乎无法正常工作:http://www.mediawiki.org/wiki/Manual:Hooks/ArticlePageDataBefore

现在我正在使用这个钩子。只是更改变量名称不起作用:

$wgHooks['ParserFirstCallInit'][] = 'wfEmployeesParserInit';

// Hook our callback function into the parser
function wfEmployeesParserInit( Parser $parser ) {
  // When the parser sees the <sample> tag, it executes 
  // the wfEmployeesRender function (see below)
  $parser->setHook( 'employees', 'wfEmployeesRender' );
        // Always return true from this function. The return value does not denote
        // success or otherwise have meaning - it just must always be true.
  return true;
}

// Execute 
function wfEmployeesRender( $input, array $args, Parser $parser, PPFrame $frame ) {
    ...

2 个答案:

答案 0 :(得分:1)

这个钩子不应该归咎于此;而不是MediaWiki的页面缓存 - 除非编辑页面或定期缓存清除,否则页面不会更新。围绕这个问题有几种方法;你可以做空编辑;你可以关闭缓存;或者您可以清除受影响页面的内容,这会强制MW重新呈现页面。

一些有用的链接,包含这些方法的详细信息:

Mediawiki API: Purge

How do I disable caching for pages using my extension?

MW Manual: Purge

How to prevent MW from caching pages

答案 1 :(得分:1)

感谢。我找到了解决方案。

$wgHooks['ParserFirstCallInit'][] = 'wfNewsParserInit';

function wfNewsRender($input, array $args, Parser $parser, PPFrame $frame)
{
  $parser->disableCache();
  ...