У меня есть PHP-скрипты, которые отображают списки сотрудников в моем MediaWiki. У меня также есть специальная страница, где вы можете указать, какие пользователи являются сотрудниками, и это работает очень хорошо. Однако, когда вы вносите изменения в бэкэнд на специальной странице, это изменение не отображается в вики-странице, где оно вставлено с тегом, до тех пор, пока вы не отредактируете эту страницу и ничего не измените и не сохраните ее.
Это может быть только потому, что я использую не тот крючок. Я пытаюсь использовать этот хук вместо этого, но, похоже, он не работает: 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 ) {
...
Крюк не виноват здесь; скорее это кэширование страниц MediaWiki — страницы не обновляются, если они не редактируются или не происходит периодическая очистка кэша. Есть несколько способов обойти эту проблему; Вы можете делать нулевые правки; вы можете отключить кеширование; или вы можете удалить содержимое затронутой страницы (страниц), что заставит MW перерисовать страницу.
Некоторые полезные ссылки с деталями этих методов:
Как отключить кеширование страниц с использованием моего расширения?
Благодарю. Я нашел решение.
$wgHooks['ParserFirstCallInit'][] = 'wfNewsParserInit';
function wfNewsRender($input, array $args, Parser $parser, PPFrame $frame)
{
$parser->disableCache();
...