Я хочу добавить категорию отслеживания для определенных страниц в моей вики с 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 … есть идеи?
Совершить Добавление ContentAlterParserOutput объясняет, как он отличается от других хуков, а также обрисовывает некоторые обходные пути. (Обязательства по добавлению хука или настроек обычно связаны со страницей руководства и, как правило, стоят щелчка.)
Поэтому ParserAfterTidy должен работать, хотя у вас возникнут проблемы с его вызовом для всех видов вещей, которые не являются частью содержимого страницы. Попробуйте выполнить нулевое редактирование на странице и посмотрите, обновляется ли категория.
Пример расширения, добавляющего категории отслеживания из аналогичного хука (ParserBeforeTidy): цитировать.
Других решений пока нет …