【问题标题】:MediaWiki hook to refresh script on article loadMediaWiki 挂钩以在文章加载时刷新脚本
【发布时间】:2014-09-17 07:49:18
【问题描述】:

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

这只能是因为我使用了错误的钩子。我正在尝试改用这个钩子,但它似乎不起作用: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 ) {
    ...

【问题讨论】:

    标签: php mediawiki mediawiki-extensions


    【解决方案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

    【讨论】:

    • 谢谢。我还没有阅读你的链接,但也许你可以在之前回答这个问题。一旦您对我的特殊页面脚本进行了更改,我希望它能够更新。我可以从那里强制重新缓存吗?那么这将解决它:) 谢谢,我已经为此苦苦挣扎了好几天
    【解决方案2】:

    谢谢。我找到了解决办法。

    $wgHooks['ParserFirstCallInit'][] = 'wfNewsParserInit';
    
    function wfNewsRender($input, array $args, Parser $parser, PPFrame $frame)
    {
      $parser->disableCache();
      ...
    

    【讨论】:

    • 请注意,这可能不是最佳 解决方案,即使它可能足以满足您的需求。这种方法的问题在于,它强制使用您的扩展的任何页面在每次查看时都重新解析,即使显示的数据没有更改。如果数据很少更改(例如通过特殊页面手动编辑),最好使用扩展存储页面列表,并让更新数据的过程从解析器缓存中清除这些页面。
    • 你是对的,这可能不是最好的解决方案。但是,此项目最多只能同时容纳 50 个用户和 3-4 个用户,因此在这种情况下这不是问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-06
    相关资源
    最近更新 更多