Manual: Extensiones/Instalación y actualización
Una vez que ha sido instalado, MediaWiki está listo para ejecutar extensiones. Para agregar una extensión siga estos pasos:
Antes de empezar
- Algunas extensiones proporcionan instrucciones diseñadas para la instalación mediante el uso de comandos Unix. Se necesita acceso de shell (SSH) para ingresar estos comandos enumerados en las páginas de ayuda de la extensión.
- En esta página se asume que la configuración de su sitio está en un archivo llamado LocalSettings.php, pero si usa un archivo diferente, por ejemplo en una granja wiki, las instrucciones deberían ser igualmente relevantes.
Descarga una extensión
Obtener el paquete de archivos
Para cada extensión, lea su documentación para conocer las ubicaciones y los métodos de descarga adecuados. Las formas habituales de descargar extensiones incluyen:
- El distribuidor de extensiones (Extension Distributor) le ayuda a seleccionar y descargar la mayoría de las extensiones populares, aunque no todos los desarrolladores de extensiones necesariamente lo recomiendan.
- Una lista de extensiones almacenadas en el repositorio de Git de Wikimedia se encuentra en git:mediawiki/extensions.
- Algunas extensiones también se encuentran disponibles a través de:
- paquetes (bundles)
- Composer, un gestor de dependencias para bibliotecas PHP. Muchas extensiones pueden o deben instalarse con Composer. Véase Composer/For extensions para obtener más información.
- repositorios de paquetes
- Algunas extensiones no usan el control de versiones y no se recomiendan.
Agrega el paquete a la carpeta /extensions
Las extensiones suelen distribuirse en forma de paquetes modulares.
Por lo general, van en su propio subdirectorio de $IP/extensions/.
Puedes agregar la carpeta de archivos manualmente o transferirla automáticamente si usas algo como Git o Composer.
Instalar una extensión
- Siempre revise los requisitos e instrucciones que vienen con cada extensión. El siguiente resumen se aplica a la mayoría de las extensiones, pero muchas de ellas requieren que se realicen pasos diferentes y/o adicionales.
- Asegúrese de que los permisos necesarios estén configurados.
- Al final del archivo
LocalSettings.php, agregue:Esta línea fuerza al intérprete de PHP a leer el archivo de extensión, y por tanto a hacerlo accesible para MediaWiki.wfLoadExtension( 'ExtensionName' );
Para conocer un método de instalación anterior usando require_once y cómo migrar, consulte las instrucciones a continuación.
- Configurar si es necesario o deseado. Por lo general, Las opciones de Configuración debe agregarse después de incluir la extensión. Nuevamente, consulte las instrucciones de la extensión para obtener más detalles.
- Es posible que se le solicite ejecutar un secuencia de comandos de mantenimiento, por ejemplo, para agregar las tablas de base de datos necesarias.
- ¡Listo!
Posibles errores
- Algunas extensiones pueden entrar en conflicto con los scripts de mantenimiento, por ejemplo, si acceden directamente a $_SERVER (no recomendado). En este caso, se pueden incluir en el condicional para que los scripts de mantenimiento aún puedan ejecutarse.
if ( !$wgCommandLineMode ) { wfLoadExtension ( 'ExtensionName' ); }
- El script de mantenimiento importDump.php fallará para cualquier extensión que requiera espacios de nombres personalizados que estén "incluidos" dentro de la condición anterior, como Extensión:SemanticMediaWiki, Extensión:Formas de página.
Agregar múltiples extensiones a wfLoadExtensions()
Especialmente si tiene una gran cantidad de extensiones, puede ser útil agregarlas como una matriz a wfLoadExtensions() (con plural -s) en lugar de agregarlas a instancias separadas de wfLoadExtension() (singular).
Por ejemplo, para instalar Cite, ParserFunctions y SpamBlacklist, podría escribir:
wfLoadExtensions( [ 'Cite', 'ParserFunctions', 'SpamBlacklist' ] );
Este método tiene una limitación: no se pueden señalar ubicaciones de archivos personalizadas, como se explica en esta sección.
Actualizar una extensión
Algunas extensiones requieren ser actualizadas cada vez que actualices MediaWiki, mientras que otras son compatibles con varias versiones.
Para actualizar a una nueva versión de una extensión:
- # Descargar la nueva versión de la extensión
- # Reemplace todos los archivos de extensión en el directorio
extensions/<ExtensionName>con los nuevos archivos. No elimine la configuración de extensión presente en LocalSettings.php - # Si la extensión requiere cambios en la base de datos de MediaWiki, deberá ejecutar el script de mantenimiento update.php. La mayoría de las extensiones mencionarán si este script debe ejecutarse o no. (Realice una copia de seguridad de sus datos antes de ejecutar el script). Si no tiene acceso a la línea de comandos, también puede utilizar el actualizador web.
- La documentación de una extensión generalmente te dice qué más debes hacer.
Desinstalar
- # Para desinstalar la extensión, elimine las líneas relevantes de LocalSettings.php (
wfLoadExtensioncon el nombre de la extensión así como cualquier línea posible para la configuración asociada). - Opcionalmente, elimine el paquete de archivos de la carpeta
/extensions.
Avanzado
Usar ubicaciones personalizadas
Esto debe hacerse antes de cargar cualquier extensión o máscara desde ubicaciones de directorio no estándar:
- Si mantiene sus extensiones en una ubicación diferente de
$IP/extensions, deberá anular$wgExtensionDirectory, o usar el segundo parámetro dewfLoadExtension(), para especificar el directorio en el que encontrar la extensión.- Si una o más de sus extensiones están almacenadas en ubicaciones adicionales, utilice el segundo parámetro de
wfLoadExtension()para especificar la ubicación del archivo.jsonpara "cada" una de esas extensiones. wfLoadExtensions()(plural) siempre usa$wgExtensionDirectoryy no se puede anular.
- Si una o más de sus extensiones están almacenadas en ubicaciones adicionales, utilice el segundo parámetro de
$wgExtensionDirectory = '/some/path'; wfLoadExtension( 'FooBar' ); // Busca en $wgExtensionDirectory para /some/path/FooBar/extension.json wfLoadExtension( 'Hello', '/some/other/path/HelloV2/Hello.json' ); // Busca /some/other/path/HelloV2/Hello.json
- Si sus apariencias no están en
$IP/skins, debe anular el mal nombrado$wgStyleDirectory, o usar el segundo parámetro dewfLoadSkin(), para especificar el directorio en el que encontrar la apariencia.- Si una o más de sus apariencias están almacenadas en ubicaciones adicionales, use el segundo parámetro de
wfLoadSkin()para especificar la ubicación del archivo.jsonpara "cada" una de esas apariencias. wfLoadSkins()(plural) siempre usa$wgStyleDirectoryy no se puede anular.
- Si una o más de sus apariencias están almacenadas en ubicaciones adicionales, use el segundo parámetro de
$wgStyleDirectory = '/my/skins'; wfLoadSkins( [ 'BarBaz', 'BazBar' ] ); // Busca en $wgStyleDirectory para /my/skins/BarBaz/skin.json y /my/skins/BazBar/skin.json wfLoadSkin( 'BamBam', '/yet/another/path/BamBam/skin.json' ); // Busca /yet/another/path/BamBam/skin.json
Migrando desde require_once
Antes de MediaWiki 1.25, la configuración de extensiones y apariencias se realizaba en un archivo PHP usando el nombre de la extensión o apariencia, por ejemplo MyExtension.php o MySkin.php.
Para instalar una extensión con LocalSettings.php, usaría require_once para llamar a este archivo PHP:
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";
Si las extensiones son lo suficientemente recientes como para admitir el sistema de registro actual, deberá convertirlas a:
wfLoadExtensions( [ 'Hello', 'FooBar' ] );
$wgFooBarEnable = true;
wfLoadSkin( 'Baz' );
wfLoadExtension( 'BarFoo', '/tmp/extension/some/where/else/BarFoo/extension.json' );