Добавить категорию отслеживания на страницу в расширении MediaWiki ** не **, используя функцию парсера

Я хочу добавить категорию отслеживания для определенных страниц в моей вики с MW 1.24. Я знаю, что могу сделать это, используя Parser :: addTrackingCategory () или ParserOptions :: addCategory (), но единственный пример, который я могу найти, — использовать их внутри функции синтаксического анализатора (как видно в расширении: например, Maps) который я не с помощью.

Я использую расширение ApprovedRevs-получен; в основном, это то, что он назначает страницу проекту и позволяет просто одобрить. Все это делается вне фактического содержимого страницы (дополнительных таблиц базы данных), поэтому нет функции / тега синтаксического анализатора.

Я попытался использовать довольно много хуков: ParserAfterTidy, ContentGetParserOutput, OutputPageParserOutput и несколько других. Хотя первая по крайней мере показывает категорию на странице, страница фактически не включена в категорию отслеживания (которая отображается как пустая).

Мой код (сокр.) Выглядит примерно так:

$wgTrackingCategories[] = 'approvedrevs-tracking-category';
$wgHooks['ParserAfterTidy'][] = 'onParserAfterTidy';

public static function onParserAfterTidy( Parser&$parser, &$text ) {
$title = $parser->getTitle();
if( ApprovedRevs:isPageAssigned( $title ) {
$parser->addTrackingCategory( 'approvedrevs-tracking-category' );
}
}

Я добавил соответствующие сообщения для этой категории отслеживания; на данный момент я вижу категории на странице и вижу категорию отслеживания, указанную в Special:TrackingCategories,

Теперь я обнаружил, что начиная с MW 1.25, есть дополнительный хук ContentAlterParserOutput, используется, например, в Расширение: CommonsMetadata, что, кажется, позволяет именно это — но я все еще ограничен MediaWiki 1.24 … есть идеи?

2

Решение

Совершить Добавление ContentAlterParserOutput объясняет, как он отличается от других хуков, а также обрисовывает некоторые обходные пути. (Обязательства по добавлению хука или настроек обычно связаны со страницей руководства и, как правило, стоят щелчка.)

Поэтому ParserAfterTidy должен работать, хотя у вас возникнут проблемы с его вызовом для всех видов вещей, которые не являются частью содержимого страницы. Попробуйте выполнить нулевое редактирование на странице и посмотрите, обновляется ли категория.

Пример расширения, добавляющего категории отслеживания из аналогичного хука (ParserBeforeTidy): цитировать.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]