Руководство:Расширения/Инсталляция и обновление
После установки MediaWiki готова принять расширения. Чтобы добавить расширение, выполните следующие шаги:
Перед началом
- Некоторые расширения предоставляют инструкции, предназначенные для установки с помощью команд Unix. Вам потребуется доступ в режиме командной строки (SSH) для использования команд и инструкций, содержащихся в руководствах по установке этих дополнений.
- Эта страница предполагает, что настройки сайта находятся в файле под названием LocalSettings.php, но если вы используете другой файл, например, в вики-ферме, инструкции должны быть одинаково релевантными.
Скачать расширение
Получите файловый пакет
Для каждого расширения ознакомьтесь с его документацией, чтобы узнать о соответствующих местах загрузки и методах. Общие способы загрузки расширений включают:
- ExtensionDistributor поможет вам загрузить большую часть популярных расширений, но не все разработчики расширений рекомендуют им пользоваться.
- Список расширений, находящихся в Git-репозитории Викимедиа, расположен по адресу $extensions.
- Некоторые расширения также доступны через:
- пакет
- Composer, менеджер зависимостей для библиотек PHP. Многие расширения можно или нужно устанавливать с помощью Composer. Перейдите к Composer/For extensions для получения дополнительной информации.
- пакетное хранилище
- Некоторые расширения не используют систему контроля версий и не рекомендуются.
Add the package to the /extensions folder
Расширения обычно распространяются как модульные пакеты. Обычно они располагаются в собственном подкаталоге каталога $IP.
Вы можете добавить папку файлов вручную или перевести ее автоматически, если вы используете что-то вроде Git или Composer.
Установка расширения
- Всегда проверяйте требования и инструкции, которые приходят с каждым расширением. Следующее резюме относится к большинству расширений, но многие расширения требуют принятия различных и/или дополнительных мер.
- Убедитесь, что требуемые разрешения CHMOD установлены.
- В конце файла
LocalSettings.phpдобавьте:Эта строка заставляет интерпретатора PHP читать файл расширения, и тем самым сделать его доступным для MediaWiki. Для более раннего метода установки с использованиемwfLoadExtension( 'ExtensionName' );
require_onceи для перемещения см. инструкции ниже.
For an earlier installation method using require_once and how to migrate, see the instructions below.
- Настройте так, как вам требуется. Configuration settings should typically be added after including the extension. Еще раз, ознакомьтесь с инструкциями расширения для получения подробной информации.
- Возможно, вам потребуется запустить сценарий обслуживания, например, для добавления необходимых таблиц базы данных.
- Готово!
Возможные ошибки
- Некоторые расширения могут конфликтовать со сценариями обслуживания, например, если они напрямую обращаются к $_SERVER (не рекомендуется). В этом случае они могут быть обёрнуты при условии, что сценарии обслуживания могут продолжить работу.
if ( !$wgCommandLineMode ) { wfLoadExtension ( 'ExtensionName' ); }
- The maintenance script importDump.php will fail for any extension which requires customised namespaces which is included inside the conditional above such as Расширение:Semantic MediaWiki, Расширение:Page Forms.
Добавляете несколько расширений сразу wfLoadExtensions()
Особенно, если у вас большое количество расширений, может быть полезно добавить их в виде массива к wfLoadExtensions() (с множественным числом -s) вместо того, чтобы добавлять их к отдельным экземплярам wfLoadExtension() (в единственном числе).
Например, чтобы установить Cite, ParserFunctions и SpamBlacklist, вы могли бы написать:
wfLoadExtensions( [ 'Cite', 'ParserFunctions', 'SpamBlacklist' ] );
Этот метод имеет одно ограничение, которое заключается в том, что вы не можете указывать на пользовательские расположения файлов, как описано в этот раздел.
Обновление расширения
Некоторые расширения требуют обновления всякий раз, когда вы обновляете MediaWiki, в то время как другие работают с несколькими версиями.
Чтобы обновить новую версию расширения нужно:
- #Загрузить новую версию расширения
- # Заменить все файлы расширения в каталоге расширения / <extensionname> новыми файлами.</extensionname> Не удаляйте конфигурацию расширения, представленную в LocalSettings.php
- # Если расширение требует изменений в базе данных MediaWiki, вам нужно будет запустить скрипт обслуживания update.php. В большинстве расширений будет указано, нужно ли запускать этот скрипт или нет. (Выполните резервное копирование ваших данных перед выполнением сценария). Если у вас нет доступа к командной строке, вы также можете использовать web updater.
- Документация для расширения обычно сообщает вам, что еще вам нужно сделать.
Установка
- # Чтобы удалить расширение, удалите соответствующие строки из LocalSettings.php (
wfLoadExtensionс именем расширения, а также любые возможные строки для соответствующих настроек конфигурации). - При необходимости удалите пакет файлов из папки /extensions.
Продвинутый уровень
Используйте пользовательские местоположения
Это необходимо сделать, прежде чем загрузить любые расширения или обёртки из нестандартных мест каталога:
- Если вы храните свои расширения в расположении, отличном от
$IP/extensions, вам нужно переопределить$wgExtensionDirectory"или использовать второй параметр, равныйwfLoadExtension()", чтобы указать каталог, в котором нужно найти расширение.- If one or more of your extensions are stored in additional locations, use the second parameter of
wfLoadExtension()to specify the location of the.jsonfile for each of those extensions. wfLoadExtensions()(plural) always uses$wgExtensionDirectoryand cannot be overridden.
- If one or more of your extensions are stored in additional locations, use the second parameter of
$wgExtensionDirectory = '/some/path'; wfLoadExtension( 'FooBar' ); // Видит в $wgExtensionDirectory за /some/path/FooBar/extension.json wfLoadExtension( 'Hello', '/some/other/path/HelloV2/Hello.json' ); // Смотреть для /some/other/path/HelloV2/Hello.json
- If your skins are not in
$IP/skins, you need to override the poorly named$wgStyleDirectory, or use the second parameter ofwfLoadSkin(), to specify the directory in which to find the skin.- If one or more of your skins are stored in additional locations, use the second parameter of
wfLoadSkin()to specify the location of the.jsonfile for each of those skins. wfLoadSkins()(plural) always uses$wgStyleDirectoryand cannot be overridden.
- If one or more of your skins are stored in additional locations, use the second parameter of
$wgStyleDirectory = '/my/skins'; wfLoadSkins( [ 'BarBaz', 'BazBar' ] ); // Выглядит в $wgStyleDirectory как за /my/skins/BarBaz/skin.json, так и за /my/skins/BazBar/skin.json wfLoadSkin( 'BamBam', '/yet/another/path/BamBam/skin.json' ); // Смотреть для /yet/another/path/BamBam/skin.json
Миграция для require_once
До MediaWiki 1.35, конфигурация для расширений и обёрток была сделана в файле PHP с использованием имени расширения или обёрток, например MyExtension.php или MySkin.php. Чтобы установить расширение с LocalSettings.php, вы используете $3 для вызова этого файла PHP:
To install an extension with LocalSettings.php, you would use require_once to call this PHP file:
require_once "$IP/extensions/Hello/Hello.php";
require_once "$IP/extensions/FooBar/FooBar.php";
$wgFooBarEnable = true;
require_once "$IP/skins/Baz/Baz.php";
require_once "/tmp/extension/some/where/else/BarFoo/BarFoo.php";
Если расширения достаточно новые, чтобы поддерживать существующую систему регистрации, вы преобразуете это в:
wfLoadExtensions( [ 'Hello', 'FooBar' ] );
$wgFooBarEnable = true;
wfLoadSkin( 'Baz' );
wfLoadExtension( 'BarFoo', '/tmp/extension/some/where/else/BarFoo/extension.json' );