mediawiki 1.16.5: загрузка javascript для определенного пространства имен - PullRequest
1 голос
/ 22 ноября 2011

Я разрабатываю расширение для Mediawiki, которое основано на другом расширении (разработанном собственными силами), которое не будет работать выше при установке Mediawiki с версией выше 1.16.5.Мне нужно включить JavaScript на страницах, принадлежащих определенному пространству имен, и я не могу использовать ResourceLoader http://www.mediawiki.org/wiki/ResourceLoader.

Кто-нибудь знает, есть ли простой способ сделать это?Мне нужно включить JQuery и Datatables для пользовательского рендеринга страниц, принадлежащих пространству имен.

1 Ответ

2 голосов
/ 23 ноября 2011

Есть как минимум три способа сделать это.

Первый подход - отредактировать волшебную страницу MediaWiki:Common.js и добавить что-то вроде этого:

if(wgNamespaceNumber == 0) { // NS_MAIN
  importScript('MediaWiki:MyScript.js');
}

Вы можете поместить произвольный javascript в блок, бит importScript существует для выполнения JavaScript, хранящегося на вики-странице, но есть и другие способы включить JS на лету (см., Например, этот вопрос ). См. Руководство: Интерфейс / JavaScript для получения подробной информации о стороне MediaWiki.

Второй подход - взломать PHP, который создает страницу MediaWiki для вставки тегов <script> в зависимости от текущего пространства имен, но это немного сложнее: вам нужно создать собственное расширение и подключить его в какой-то подходящий момент. Крючок ParserAfterTidy выглядит подходящим, см. Крючки .

Третий подход - просто отредактировать скин и загрузить JS для каждой страницы в вики. Есть ли причина, по которой вы не хотите делать это для каждой страницы? Они все равно кэшируются, так что это только одноразовый удар.

...