Создание своего расширения для MediaWiki. Часть 1 – Начало

Небольшая предыстория: понадобилось мне как-то разместить в корпоративной MediaWiki телефонный справочник сотрудников. Справочник большой, 300 контактов с внутренними, городскими, сотовыми номерами и т.п. Справочник этот ведет специально обученный человек и хранится он (какое совпадение!) в MySql-базе рядом с базой wiki, т.е. на том же сервере. Делать статичную страницу с телефонами было бы не лучшим решением, поэтому wiki должна формировать справочник динамически, прямо из базы. Никаких подходящих инструментов и расширений для воплощения своего замысла я не нашел, поэтому решил написать расширение своими скромными силами, благо с веб-разработкой знаком. Стал искать и изучать документацию – оказалось что русской документации почти нет, официальная крайне скупа и чересчур лаконична. Пришлось вгрызаться в гранит, попутно делая заметки, которые и стали основой этой серии статей.

Приступим

Начнём с постановки задачи: создаем расширение PhoneBook. Основная идея – сделать страницу, при входе на которую мое расширение будет отображать взятый из базы данных и отформатированный телефонный справочник. Для таких целей идеально подходит служебная страница. Таким образом, я хочу, чтобы мое расширение показывало телефонный справочник на странице http://моявики/Служебная:Телефоны.

Любая wiki имеет множество специальных страниц, называемых Служебными. Это такие страницы, которые генерируются программным обеспечением по запросу пользователя. Они расположены в своём собственном пространстве имён Special: (Служебная:) и, в отличие от остальных страниц, недоступны для прямого редактирования.

Начнем с самого малого. Для начала, расширение MediaWiki должно иметь свою папку. Папки расширений wiki располагаются в каталоге extensions, который находится в корне wiki.  Зайдем туда и создадим папку PhoneBook – в ней и будет жить мое расширение. Теперь будем наполнять эту папку глубоким смыслом.

Далее: Вот горшок пустой, он предмет простой. Пустая папка – это хорошо, но мало. Для начала у расширения должен быть файл манифеста. Это текстовый файл формата json, который содержит в себе полное описание расширения и его возможностей. Файл манифеста расширения должен называться extension.json

Создадим такой файл в каталоге extensions/PhoneBook/. Сначала это будет самый простой файл. Потом, по мере взросления, файл будет усложняться:

{ 
	"name": "PhoneBook", 
	"author": "StarXXX", 
	"url": "https://hardisoft.ru/", 
	"description": "Телефонный справочник организации", 
	"version": "1.0", 
	"license-name": "GPL-2.0+", 
	"type": "other", 
	"manifest_version": 1 
}

Думаю, все достаточно ясно, но поясню: name – название расширения, author – его автор, либо группа авторов, url – страница расширения в интернете, description – описание, version – версия расширения, license-name – название лицензии по которой распространяется расширение, type – тип расширения (я указал other, типа “другое”, но есть еще варианты), manifest_version ссылается на схему extension.json файла (На данный момент единственной поддерживаемой 1я версия (MediaWiki 1.26.x и 1.27.x). Многие поля опциональные, но все-таки будет хорошо, если вы их заполните. Детальное описание на английском можно посмотреть тут.

Итак, удивительно, но у нас уже есть полноценное расширение. Осталось его подключить к MediaWiki. Для этого в файл LocalSettings.php, который находится в корне wiki, добавим вызов функции wfLoadExtension:

wfLoadExtension( 'PhoneBook' );

Думаю вполне понятно, что функции wfLoadExtension передается название расширения(=имя папки).

На время разработки так же можно отключить кеширование, чтобы не мешало. Для этого в том же LocalSettings.php добавим такие строки:

$wgMainCacheType = CACHE_NONE; 
$wgCacheDirectory = false; 
$wgEnableParserCache = false; 
$wgCachePages = false;

 

Итак, первый этап пройден. Расширение готово. Проверим, что оно действительно ожило. Для этого зайдем на служебную страницу Версия: http://моявики/Служебная:Версия

 

2018-09-18_23-53-21

 

Прокрутив страницу до раздела “Установленные расширения” в разделе “Иное” мы увидим наше расширение. “Иное”, потому что в extension.json написано «type»: «other». Итак, wiki видит наше расширение, однако оно ничего не делает, потому что ничего не умеет – умелку мы ему не отрастили. Теперь необходимо умелку-то отрастить — научить его реагировать на вызов служебной страницы http://моявики/Служебная:Телефоны, но это уже другая история и об этом я расскажу в следующей серии


Далее, ко 2 части >>>


Поделиться с друзьями:
  • Добавить ВКонтакте заметку об этой странице
  • Одноклассники
  • Facebook
  • В закладки Google
  • Мой Мир
  • Twitter
  • LiveJournal
  • Яндекс.Закладки
  • LinkedIn
  • Reddit
  • StumbleUpon
  • БобрДобр
  • Memori.ru
  • МоёМесто.ru

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *