1

我有一个 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 ) {
    ...
4

2 回答 2

1

钩子在这里不应该受到责备。相反,它是 MediaWiki 的页面缓存——页面不会更新,除非它们被编辑或发生定期缓存清除。有几种方法可以解决这个问题;您可以进行空编辑;您可以关闭缓存;或者您可以清除受影响页面的内容,这会强制 MW 重新呈现页面。

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

Mediawiki API:清除

如何使用我的扩展程序禁用页面缓存?

MW 手册:吹扫

如何防止MW缓存页面

于 2014-09-18T16:03:00.427 回答
1

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

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

function wfNewsRender($input, array $args, Parser $parser, PPFrame $frame)
{
  $parser->disableCache();
  ...
于 2014-12-10T11:11:26.667 回答