Mediawiki
Versión |
1.15.5-2 |
Página principal |
http://www.mediawiki.org |
Observaciones |
Versión correspondiente a Squeeze (Debian) |
Sumario
- 1 Enlaces y referencias
- 2 Configuración
- 3 Ajustes de configuración
- 4 Uso y costumbres
- 4.1 Archivo php.ini
- 4.2 Depurando errores
- 4.3 Crear un usuario
- 4.4 Palabras mágicas
- 4.5 Programas de mantenimiento
- 4.6 Plantillas
- 4.7 Controlando qué se incluye de una plantilla
- 4.8 Encontrando plantillas disponibles
- 4.9 Anclajes
- 4.10 Galerías de imágenes
- 4.11 Tablas
- 4.12 Redirecciones
- 4.13 Otras páginas especiales
- 5 Recetario
- 6 Errores
Enlaces y referencias
- Páginas oficiales de Mediawiki:
- Edición:
- Configuración:
- Variadas
- Ref: FAQ de MediaWiki
- Páginas internas:
- Páginas externas:
Configuración
Paquetes en una distribución Debian
La siguiente es una relación orientativa de paquetes que son necesarios para disponer de mediawiki funcionando en la rama estable de Debian, incluyendo los mecanismos de creación de vistas de imágenes, comprobación antivirus en los archivos enviados, funciones matemáticas y caché de base de datos.
- mediawiki
- mediawiki-extensions
- php5
- apache2
- libapache2-mod-php5
- mysql-server
- mediawiki-math
- imagemagick
- memcached
- clamav
Pasos genéricos a seguir
- Instalar el software
- Configurar la base de datos
- Configurar el servidor web
- Ajustar la configuración de PHP
Tras instalar en Debian los paquetes de software el sistema queda prácticamente preparado para poder configurarlo vía web:
http://localhost/mediawiki/config/index.php
Necesitaremos principalmente el superusuario del servidor MySQL y su contraseña para que pueda crear automáticamente la base de datos y una cuenta de administración del wiki llamada WikiSysOp (aunque puede cambiarse y elegir otra).
La configuración queda grabada en un archivo en /var/lib/mediawiki/config/LocalSettings.php
que deberíamos mover a /etc/mediawiki
con los permisos adecuados para que nadie más que el programa Apache pueda acceder a su contenido (figuran varias contraseñas).
Configurar la base de datos
Conectamos con el servidor MySQL como el administrador:
victor@falcata:~$ mysql -u root -p Enter password: Welcome to the MySQL monitor. Commands end with ; or \g. ... mysql>
y procedemos a crear un usuario que hará de administrador, una base de datos y a darle al usuario derechos sobre ella.
mysql> create user wikiadmin; mysql> create database mediawiki character set utf8; mysql> set password for wikiadmin = PASSWORD('CONTRASEÑA'); mysql> grant all on mediawiki to 'wikiadmin'@'localhost';
Configurar el servidor web
Los aspectos que quiero tocar en el servidor web son:
- Hacer obligatoria la conexión cifrada para no enviar credenciales en claro.
- Determinar el URL de acceso al wiki:
- A través de un host virtual.
- Sin prefijo de wiki
- Con un prefijo específico.
Aspectos
Imágenes
Las imágenes en el wiki precisan de:
- Un directorio con permisos de escritura
- Acceso al programa de conversión de imágenes
- Un modelo de almacenamiento definido antes de subir la primera imagen.
## Indicadores activos para emplear imágenes en el wiki (incluyendo subir mediante un URL)
$wgEnableUploads = true;
$wgUseImageMagick = true;
$wgImageMagickConvertCommand = "/usr/bin/convert";
$wgAllowCopyUploads = true;
$wgShowExceptionDetails = true;
##
## Parámetros de almacenamiento y acceso a las imágenes
$wgUploadDirectory = "/var/lib/mediawiki/images";
$wgUploadPath = "/w/images";
##
## Almacenar las imágenes linealmente y no dentro de un
## árbol de subdirectorios
$wgHashedUploadDirectory = false;
Logotipo y favicon
Una vez obtenida una imagen para utilizar como logotipo derivamos de ella un favicon y la subimos al directorio de imágenes y anotamos en la configuración cuál utilizar:
$wgLogo = "{$wgUploadPath}/astillas-logo-120.jpg";
$wgFavicon = "{$wgUploadPath}/favicon.ico";
Ajustes de configuración
Acortando URL
- Ref: Acortando direcciones en mediawiki (especialmente eliminando la expresión index.php del URL).]
Cuando se pretende que los URL del wiki sean lo más limpio posible tenemos que tocar en varios sitios en la configuración, dependiendo de si tenemos o no acceso como root a la instalación del wiki.
En mi caso he tomado la decisión de usar la forma estándar de URL que se emplea en la Wikipedia como
http://example.com/wiki/Page_title
porque me permite disponer de un espacio de nombres libres en la raíz del servidor
http://example.com/debian http://example.com/webdav http://example.com/cgi-bin/tool.pl http://example.com/victor
para poder emplearlos con otras aplicaciones o páginas especiales.
Según la documentación los pasos a seguir son los siguientes:
- Asegurarse de que el directorio de Mediawiki no está directamente bajo el árbol de archivos del servidor web para no mezclar páginas del wiki y otros contenidos. En Debian se instala bajo
/var/lib/mediawiki
por lo que esta precaución ya está tomada. En mi caso, además, suelo añadir un enlace simbólico de dicho directorio a/var/www/w
de manera que toda la instalación (como los temas) queda al alcance de una única ruta. - Modificar la configuración del wiki en el archivo
LocalSettings.php
para que refleje las rutas de los programas (/w/index.php) y los artículos (/wiki/Page_title). - Cambiar la configuración del servidor web para apuntar a estas nuevas rutas.
- Reiniciar el servidor web
- Probar el acceso a través de http://localhost/wiki
El archivo LocalSettings.php queda así:
$wgScriptPath = "/w";
$wgScript = "$wgScriptPath/index.php";
$wgArticlePath = "/wiki/$1";
mientras que la configuración de Apache queda de esta forma:
Alias /wiki /var/lib/mediawiki/index.php
<Directory /var/lib/mediawiki/>
Options +FollowSymLinks
AllowOverride All
order allow,deny
allow from all
</Directory>
Subpáginas
Además de tener un nombre más largo ya que la jerarquía de páginas se separa con una barra inclinada como en
http://astillas.net/wiki/SandoBox/Tipografia/varios
en cada página se añade automáticamente, al principio de la misma, enlaces hacia las páginas superiores de las que descienden.
Un detalle a tener en cuenta es que el nombre de la subpágina no admite las mismas mejoras estéticas que los nombres de página. Estos, en mediawiki, se normalizan automágicamente cambiando a mayúscula la primera letra de los mismos. En las subpáginas no sucede así por lo que Hardware/impresoras
es diferente de Hardware/Impresoras
.
Wikis múltiples
Dada la extensión del tema he abierto una página nueva para describir la configuración de múltiples wikis en un mismo servidor.
Derechos de acceso
Existen varios parámetros que se pueden definir en la configuración local (LocalSettings.php
) y que marcan las líneas generales de funcionamiento del wiki:
# Creación de usuarios sólo a administradores
$wgGroupPermissions['sysop']['createaccount'] = true;
# Permite la edición sólo a usuarios registrados
$wgGroupPermissions['*']['edit'] = false;
$wgGroupPermissions['user']['edit'] = true;
Para ello es necesario editar la página MediaWiki:Sidebar y cambiar allí el orden o el contenido mostrado. Éste consiste en una lista de elementos un poco especiales porque aparece un destino y un texto a mostrar separados por una barra vertical (|
). El destino puede ser una página del wiki o un URL completo.
Ejemplo:
* navigation ** mainpage|mainpage ** recentchanges-url|recentchanges ** randompage-url|randompage ** sandbox|Zona de pruebas
Enlaces entre wikis
Existe un tipo de enlace especial que permite crear direcciones de otros wikis sin necesidad de conocerlas al completo.
Por ejemplo se puede crear un enlace de éste tipo
[[:wp:Agujero Analógico|esto es obligatorio de leer]]
y el programa mediawiki lo convierte a
[http://es.wikipedia.org/wiki/Agujero_Analógico esto es obligatorio de leer]
en el producto final de la página.
El programa emplea una tabla de su base de datos llamada interwiki para conservar una correlacción entre prefijos (como wp) y direcciones web (como http://es.wikipedia.org/wiki/). Alterarla implica tener acceso a bajo nivel al servidor de datos e insertar un registro en dicha tabla o cambiar el contenido de otra puesto que el entorno mediawiki suele incluir una larga lista de ellos.
La estructura de la tabla de enlaces entre wikis tiene una descripción propia aunque existe una extensión preparada para mantener más cómodamente este mapa de correspondencias.
Otra característica de estos enlaces es que para ellos no existe la comprobación habitual de página existente o nueva, por lo que siempre aparecen como enlaces externos (en color azul generalmente).
Si se tiene acceso directo al servidor MySQL se pueden insertar directamente valores en la tabla apropiada:
$ mysql ... Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 181 Server version: 5.0.51a-24+lenny5 (Debian) Type 'help;' or '\h' for help. Type '\c' to clear the buffer. mysql> insert into interwiki set iw_prefix='wp', iw_url='http://es.wikipedia.org/wiki/$1'; Query OK, 1 row affected, 1 warning (0.00 sec) mysql>
Tamaño de los archivos a subir
En el caso del tamaño de los archivos a subir a un wiki existen tres actores que pueden tener algo que decir al respecto: el lenguaje de programación, el servidor web y el propio Mediawiki.
- PHP
- El entorno del lenguaje debe ser alterado para que permita subidas de archivos mayores de 2 Mb, que es el valor predeterminado. Para ello es necesario cambiar las variables
upload_max_filesize
ypost_max_size
en el archivo principal de configuración. - La cifra límite puede expresarse en bytes o emplear alguna de las abreviaturas como K para kilobytes, M para megabytes o G para gigabytes.
- Apache
- Hablo sobre éste aunque podría ser cualquier otro con soporte PHP. En este caso se debe cambiar el parámetro
LimitRequestBody
al valor cero (0) para no limitarlo (que suele ser el valor predeterminado) o a un número entero de bytes expresando el límite. - Mediawiki
- El programa también tiene una variable que controla el tamaño de los archivos que recibe y se llama
$wgMaxUploadSize
aunque al ser leída en tiempo de ejecución no se aplica retroactivamente. Su valor predeterminado es de 100 Megabytes aunque en realidad Mediawiki sólo emplea este límite cuando se usan URL como fuente de archivos.
Empleando URL para subir archivos
Advertencia: esta característica puede abrir algunas brechas de seguridad en el wiki. Es necesario emplearla con precaución.
Para poder subir archivos a un wiki procedentes directamente de la red, sin necesidad de tomarlos del almacenamiento local, es necesario cumplir unos requisitos:
- Fijar a verdadero la variable
$wgAllowCopyUploads = true
- Conceder permiso a los usuarios para utilizar esta característica alterando la variable
$wgGroupPermissions['user']['upload_by_url'] = true
ya que generalmente sólo está concedida a los administradores (sysop). - El entorno PHP debe tener habilitada la característica cURL y si el servidor está accediendo a la red mediante un proxy también se debe ajustar la variable
$wgHTTPProxy
Validación de contenidos
El proceso de aceptación de contenidos en Mediawiki consta de dos fases: la primera consiste en detectar qué se ha subido y la segunda en comprobar si lo detectado, el tipo MIME, coincide con su nomenclatura
Detección MIME
Mediawiki emplea el módulo PHP FileInfo o el antiguo MimeMagic para obtener el tipo MIME del contenido. Como última opción se utilizará la detección que proporciona el módulo PHP GD, que sólo sirve para un grupo pequeño de imágenes.
También se puede usar un programa externo, indicando cómo llamarlo dentro de la variable $wgMimeDetectorCommand
, lo que permite efectuar pruebas sobre lo que va a reconocer Mediawiki -evitando falsos positivios- sin tocar módulos PHP ni activando la depuración.
Si se desea desactivar completamente la detección de contenido se usa lo siguiente en la configuración
$wgVerifyMimeType = false;
Validación MIME
Para emparejar la extensión del nombre del archivo con su tipo MIME Mediawiki emplea un archivo llamado mime.types
cuya estructura es la de un archivo de texto plano con un registro por línea. Este registro contiene campos separados por espacios en blanco: el primero es el tipo formal MIME y los siguientes son las extensiones admisibles de archivos para el tipo dado.
Ejemplo tomado del archivo real:
... application/x-xpinstall xpi application/xhtml+xml xhtml xht application/xslt+xml xslt application/xml xml xsl xsd application/xml-dtd dtd application/zip zip jar xpi sxc stc sxd std sxi sti sxm stm sxw stw application/x-rar rar ...
Una vez que el emparejamiento funciona se procede a comprobar si la extensión es una de las admitidas consultando varias variables:
Variable | Valor | Descripción |
---|---|---|
$wgStrictFileExtensions
|
true | Si está activa indica que no se admita ninguna extensión que no figure en $wgFileExtensions |
$wgFileExtensions
|
Ver manual | Lista de extensiones de archivos que son admisibles vía subida de archivos o simplemente lista de aquellas extensiones preferentes. Depende de la variable $wgStrictFileExtensions. |
$wgCheckFileExtensions
|
true | Activa o no la comprobación de extensiones de archivos en la subida al wiki. |
$wgFileBlackList
|
Ver detalles | Lista de extensiones de archivos que nunca se permite subir al wiki. |
$wgVerifyMimeType
|
true | Activa o no la comprobación de tipos MIME (por contenido) en la subidad de archivos al wiki. |
Alias y clasificación MIME
Mediawiki emplea un mecanismo para clasificar los contenidos según su tipo MIME. Para ello consulta una lista guardada en el archivo mime.info
en la que relaciona, línea por línea, uno o varios tipos MIME con una etiqueta clasificatoria que luego guarda -junto con el tipo MIME resultante- en la tabla de imágenes de la base de datos que contiene el wiki.
Algunos ejemplos son:
image/png image/x-png [BITMAP] image/svg image/svg+xml application/svg+xml application/svg [DRAWING] audio/mp3 audio/mpeg3 audio/mpeg [AUDIO]
Por el momento no tiene utilidad concreta pero se espera que en el futuro sirva para mejorar la presentación de medios.
Configuración para validaciones MIME
Existen algunas variables que definen los recursos de validación:
Variable | Valor | Descripción |
---|---|---|
$wgMimeTypeFile
|
"includes/mime.types" | Contiene la ruta del archivo con la asociación de tipos MIME y extensiones. |
$wgMimeInfoFile
|
"includes/mime.info" | Contiene la ruta del archivo que contiene los alias y las clasificaciones de los tipos MIME. |
$wgMimeDetectorCommand
|
Define la llamada a un programa externo para detectar contenidos. El programa debe enviar únicmaente el tipo MIME resultante a su salida estándar. Recibirá como parámetro final el nombre del archivo a comprobar. Como ejemplo se puede usar$wgMimeDetectorCommand = "file --brief --mime"; |
Espacios de nombres adicionales
Mediawiki admite la creación de espacios de nombres adicionales bajo los cuales crear páginas nuevas como Contabilidad:Errores o Noticias:Economía. Para ello se precisa retocar la configuración del wiki y declarar la nueva raíz de nombres en el archivo LocalSettings.php asignándole un valor numérico que sirva como índice dentro del entorno.
$wgExtraNamespaces[510] = "Contabilidad";
$wgExtraNamespaces[511] = "Noticias";
Las páginas pueden crearse entonces de la forma habitual solo que añadiéndoles el prefijo correspondiente:
Noticias:Nueva impresora Contabilidad:Saldos contables
Para evitar colisiones existe un registro público de números y nombres en el que se ha reservado el rango 510 a 599 para instalaciones locales, de tal manera que las extensiones futuras no usarán estos valores en sus instalaciones.
Otra retoque adicional en la configuración es asegurarse de que las nuevas páginas creadas en estos nuevos espacios de nombres estén incluídas en la estadística del sitio y en funciones como la de página al azar. Para ello se deben añadir los índices a la variable $wgContentNamespaces:
$wgContentNamespaces[] = 500;
$wgContentNamespaces[] = 501;
# ...
Cuando se retoca esta variable es también una buena idea actualizar las estadísticas internas del wiki.
Uso y costumbres
Archivo php.ini
El archivo php.ini
es el designado para almacenar la configuración del entorno PHP y al que hace referencia la mayor parte de las páginas con documentación, artículos y errores. Las definiciones que contiene condicionan totalmente el funcionamiento de cualquier programa escrito en ese lenguaje por lo que es importante protegerlo y ajustar su contenido.
Encontrar el archivo
La ruta más habitual (y más citada) del archivo principal de configuración de PHP es
/etc/php/php.ini
aunque el método más seguro para obtenerlo es invocar a la función phpinfo()
creando un pequeño archivo llamado phpinfo.php en el directorio raíz del servidor web con esta línea como contenido
<?php phpinfo(); ?>
y luego ejecutarlo a través de su URL; algo como http://localhost/phpinfo.php y buscar las líneas que indican qué archivos están cargados y dónde los ha encontrado:
Configuration File (php.ini) Path | /etc/php5/apache2 |
---|---|
Loaded Configuration File | /etc/php5/apache2/php.ini |
Scan this dir for additional .ini files | /etc/php5/apache2/conf.d |
Additional .ini files parsed |
/etc/php5/apache2/conf.d/curl.ini, ... /etc/php5/apache2/conf.d/sqlite3.ini, /etc/php5/apache2/conf.d/suhosin.ini |
En Debian existe un esquema bastante ordenado que divide la configuración primero por la versión de PHP y luego por cada uno de los SAPI existentes al estilo
/etc/php$VERSION/$SAPI/php.ini
por lo que si tenemos PHP funcionando con Apache2 en Debian el archivo de configuración será
/etc/php5/apache2/php.ini
Parámetros importantes
- engine
- Habilitar (on) para que PHP pueda usarse.
- expose_php
- Deshabilitar (off) para que no se muestre información sobre versión ni extensiones instaladas.
- memory_limit
- Ajustar si los programas emplean mucha memoria para un mejor funcionamiento.
- post_max_size
- Tamaño máximo de un acción POST puede tener. Indispensable para subir archivos grandes.
Depurando errores
Según la documentación se debe tener en cuenta lo siguiente:
- Como parte del diseño general de Mediawiki la orden echo no sirve para encontrar errores.
- Los mecanismos descritos para facilitar la depuración deben desactivarse una vez se ha encontrado una solución al problema, dado que podrían proprocionar demasiada información a supuestos atacantes.
La variable
$wgDebugLogFile
puede contener una ruta absoluta de un archivo a donde enviar todos los registros de depuración. El mecanismo se desactiva anulando dicha variable. El archivo debe tener permisos de escritura para el usuario bajo el que se ejecuta el servidor web; en el caso de Debian es www-data.
Errores PHP
Para que los errores de PHP se muestren en la página generada se debe incluir la siguiente estrofa al comienzo (muy al comienzo) del archivo de configuración LocalSettings.php
:
error_reporting(E_ALL); ini_set("display_errors", 1);
Pueden ocurrir errores lo bastante graves como para que éstas líneas no tengan tiempo de tener efecto, pero en ese caso dichos errores suelen quedar registrados en el servidor web. Conviene entonces repasar la variable error_log de la configuración de PHP.
Errores SQL
$wgShowSQLErrors = true; $wgDebugDumpSql = true;
Crear un usuario
Para poder crear usuarios en Mediawiki se necesita primero que el wiki esté configurado para que alguien tenga permisos suficientes para crear cuentas. En el siguiente ejemplo asignamos estos privilegios a aquellos usuarios del grupo sysop (WikiSysop por ejemplo) pero lo negamos a cualquier otro por lo que en la pantalla de entrada de usuarios no aparecerá el correspondiente enlace para hacerlo.
# Archivo /etc/mediawiki/LocalSettings.php ... $wgGroupPermissions['*']['createaccount'] = false; $wgGroupPermissions['sysop']['createaccount'] = true; ...
Y segundo se debe acceder al lugar adecuado que es la página especial Special:UserLogin
. En este caso necesitamos estar ya registrados con una cuenta privilegiada y podemos ir directamente con una URL tipo http://URL_DEL_WIKI/Special:UserLogin o escribir
Special:UserLogin
en la caja de búsqueda y seleccionar Ir (y no Buscar).
Es entonces cuando aparece la siguiente pantalla:
Palabras mágicas
Se denominan así a todas aquellas que hacen algo diferente cuando Mediawiki muestra la página, bien sea ejecutar código, bien sea mostrar otra página u otro valor.
Existen varios tipos:
- Conmutadores de funcionamiento como __TOC__.
- Pares de etiquetas con estilo XML como <nowiki>.
- Una variable como {{CURRENTDAY}}.
Conmutadores de funcionamiento
Sólo incluyo aquellas que he empleado y quiero tener como referencia.
Palabra | Descripción |
---|---|
__TOC__ | Fuerza la aparición de la tabla de contenidos en ese punto. |
__NOTOC__ | Oculta la tabla de contenidos de la página. |
__NOEDITSECTION__ | Oculta los enlaces de edición de sección que aparece junto a los encabezados. |
Etiquetas especiales
Las etiquetas deben incluirse al estilo XML y el contenido es el texto que encierran.
<etiqueta>Contenido</etiqueta>
Etiqueta | Funcionamiento |
---|---|
nowiki | Inserta su contenido literalmente, sin interpretar ningún carácter ni palabra especial. |
Variables
Todas las variables se escriben entre dos pares de llaves como en
{{CURRENTYEAR}}
Nombre | Contenido |
---|---|
CURRENTYEAR | Año en curso (2022)) |
CURRENTMONTH | Número de mes actual (06) |
CURRENTDAY | Número de día según el mes (6) |
CURRENTTIME | Hora y minutos (15:16) |
---- | |
SITENAME | Nombre del wiki (Astillas.net) |
SERVER | URL del dominio (https://astillas.net) |
SERVERNAME | Nombre del servidor (astillas.net) |
PAGENAME | Título de la página (Mediawiki) |
FULLPAGENAME | Espacio de nombre y título de la página (Mediawiki) |
---- | |
NUMBEROFPAGES | Número de páginas totales incluyendo imágenes y plantillas (482). |
NUMBEROFARTICLES | Número de artículos (205) |
---- | |
CURRENTVERSION | Versión del software Mediawiki (1.31.16) |
Programas de mantenimiento
Mediawiki dispone de un conjunto de programas escritos generalmente en lenguaje PHP que sirven para efectuar tareas de mantenimiento en la instalación, y que residen en un directorio específico. En Debian están situados en /usr/share/mediawiki/maintenance/
.
Estos programas suelen precisar de un acceso a la base de datos con mayores privilegios que la cuenta de uso habitual en Mediawiki (wikiuser) por lo que existen dos variables concretas llamadas
en el archivo /etc/mediawiki/AdminSettings.php
.
El usuario debe ser una cuenta especial, con privilegios administrativos, y en el caso de MySQL puede realizarse con la siguiente instrucción:
GRANT ALL PRIVILEGES ON wikidb.* TO 'wikidbadmin'@'localhost' IDENTIFIED BY 'strong-password';
Para ejecutar estos programas se puede emplear la consola y el intérprete PHP directamente, aunque existen algunos parámetros comunes a todos ellos:
- --conf <path>
- Define la localización del archivo LocalSettings.php.
- --dbuser <username>
- Nombre de usuario para conectar con la base de datos.
- --dbpass <password>
- Contraseña a emplear con el usuario anterior.
Un ejemplo de ejecución sería:
# cd /usr/share/mediawiki/maintenance # php update.php MediaWiki 1.15.5-2squeeze1 Updater Going to run database updates for wikidb-mw_ Depending on the size of your database this may take a while! Abort with control-c in the next five seconds...0 ...have ipb_id field in ipblocks table. ...have ipb_expiry field in ipblocks table. ...already have interwiki table ... Deleting old default messages (this may take a long time!)...Done Checking site_stats row...ok. Purging caches...done. Done.
Plantillas
Para crear una plantilla en Mediawiki es necesario primero crear una página en el espacio de nombres Template, rellenarla con aquella información que va fija en cada plantillas y luego, desde otra página, llamarla pasándole la información variable.
Si se emplean parámetros anónimos es posible que determinados contenidos, como los URL que incluyan lista de parámetros, lleguen mal formados a la plantilla. Para ello he encontrado una solución usando forzando el uso de parámetros numerados.
Por ejemplo, si la plantilla hace este uso de lo que recibe:
Ref: [ {{{1}}} {{{2}}} ]
y se la llama con algo como
{{Ref|http://example.com?q=code|Ejemplo}}
la plantilla sólo recibirá el segundo parámetro por lo que es necesario forzarle a que distinga dichos parámetros con:
{{Ref|1=http://example.com?q=code|2=Ejemplo}}
Controlando qué se incluye de una plantilla
Dentro de una plantilla se pueden emplear texto entre etiquetas especiales para incluir o excluir parte del contenido en dos situaciones diferentes: cuando se visualiza la página de la plantilla y cuando se usa en otras páginas.
noinclude
- Cualquier cosa dentro de esta etiqueta será procesado y mostrado sólo cuando la página de la plantilla sea vista directamente. Tiene un buen puñado de utilidades, pero la más importante es añadir texto descriptivo sobre cómo se usa la plantilla y de qué forma.
includeonly
- Por contra, cualquiera cosa dentro de esta etiqueta será procesada y mostrada únicamente cuando la plantilla se haga en la página que la usa. La finalidad principal es añadir la página que usa la plantilla a una o más categorías sin que ésto afecte a la plantilla en sí, que puede tener cualquier otra filiación.
Si además empleamos la etiqueta nowiki
es bastante sencillo incluir ejemplos prácticos de uso de la plantilla que puedan ser copiados directamente.
Como ejemplo se puede visitar la plantilla Template:Programa.
Encontrando plantillas disponibles
Para encontrar todas las plantillas disponibles en un wiki existe la página especial
[[Special:Uncategorizedtemplates]]
que muestra precisamente todas aquellas plantillas que no pertenecen a una categoría. En caso de que dentro de un wiki el número de plantillas sea muy grande y se haga necesario clasificarlas se puede emplear la página especial
[[Special:Allpages]]
e indicar en el formulario de búsqueda que sólo lo haga en el espacio de nombres Templates.
En astillas podemos ver entonces:
Anclajes
- Para crear un anclaje (elemento anchor en el lenguaje HTML) en una página del wiki se debe escribir lo siguiente
[[#anchor_name|text]]
teniendo en cuenta que si el texto se deja en blanco (un simple espacio puede servir) el anclaje será invisible en la visualización de la página. - Para hacer referencia a un anclaje basta con usar la siguiente construcción
[[page#anchor|text]]
esto es, se crea un enlace intrawiki normal y corriente pero se emplea el carácter almohadilla (#
) como separador. - Mediawiki crea anclajes automáticamente para cada encabezado formal que encuentre en una página. El texto de dicho encabezado será el nombre del anclaje.
Galerías de imágenes
Para ello se debe emplear la etiqueta gallery
con apertura y cierre, e incluir dentro de ella una lista de archivos para usar como imágenes, separados con un carácter tubería (|
) de un título opcional.
<gallery widths=250px> Image:archivo1.ext|titulo Image:archivo2.ext|titulo ... </gallery>
La etiqueta gallery admite unos cuantos parámetros, siendo los más útiles a mi entender los siguientes:
- caption
- Título para toda la galería
- widths
- Ancho en pixels para todas las imágenes
- perrow
- Nº de imágenes por fila
Tablas
Sumario de posibilidades:
{| |
Inicio de tabla |
|+ |
Leyenda de la tabla (opcional. Sólo puede situarse entre el comienzo y la primera fila. |
|- |
Nueva fila (opcional si es la primera) |
! |
Celda de cabecera de la tabla (opcional). Se pueden añadir más celdas de la cabecera en la misma línea (separándolas con dos cierres de exclamación !! ) o en nuevas líneas comenzando cada una con un fin de exclamación (! ).
|
| |
Celda de datos de la tabla (obligatoria). Para añadir más celdas en la misma línea se deben separar con dos cierres de exclamación !! . En líneas separadas debe aparecer sólo un cierre de exclamación (! ).
|
|} |
Final de tabla |
- Todas estas marcas deben comenzar en una nueva línea excepto las secuencias
||
y!!
que sirven para añadir celdas sobre la mísma línea. Además, se ignora cualquier espacio en blanco al comienzo de una línea. - Atributos XHTML. Cada marca, exceptuando el final de tabla, acepta uno o más atributos en lenguaje XHTML. Deben aparecer en la misma línea que la marca separádos entre sí por un espacio en blanco.
- Las celdas y la leyenda (
|
o||
,!
o!!
, y|+
) guardan contenido, así que se debe emplear un único carácter tubería (|
para separar los atributos de dicho contenido. Éste puede estar en la misma línea que los atributos o en las siguientes. - Las marcas de tablas y fila (
{|
y|-
) no almacenan contenido directamente por lo que no hay que añadir ningún carácter tubería (|
) tras los posibles atributos.
- Las celdas y la leyenda (
- El contenido puede o bien continuar en la misma línea, tras los atributos, o bien en líneas independientes bajo la marca de celda. Si dicho contenido emplea marcas de wiki que necesitan comenzar en una línea nueva como listas, encabezados o marcas de celda, necesitan estar en su propia línea independiente.
- El carácter tubería se puede emplear como contenido dentro de etiquetas
nowiki
.
Redirecciones
Las redirecciones en los wiki son útiles cuando existen varios nombres que se refieran al mismo contenido, o existan nombres de página alternativos según estén en mayúsculas o minúsculas, contengan o no tildes u otros signos de puntuación.
Para ello se debe escribir justo al comienzo de la página la siguiente directiva
#REDIRECT [[Nueva pagina]]
sin ningún espacio entre el carácter (#
) y la palabra clave REDIRECT
, que a su vez tampoco es sensible a mayúsculas.
Otras páginas especiales
Mediawiki dispone de varios nombres de páginas especiales que permiten llegar a sitios ú obtener información especial. La lista es larga, puede variar de una instalación a otra y dispone de una página con documentación sobre las mismas.
Algunas de ellas son:
- Special:AllPages muestra todas las páginas de un wiki.
- Special:CategoryTree despliega el árbol de categorías.
- Special:ListRedirects lista las redirecciones de páginas.
Recetario
Texto preformateado y líneas largas
Cuando queremos situar un texto como preformateado en una paǵina de mediawiki, pero no queremos que las líneas demasiado largas estropeen el diseño de la página le añadimos un atributo de estilo indicándo cómo queremos que trate los espacios en blanco.
Aviso: cambiar el estilo significa que el texto deja de estar preformateado y que las líneas comienzan a fluir por la página; los resultados pueden no ser los esperados.
<pre style="white-space: normal"> ... Texto con líneas largas ... </pre>
El estilo predeterminado es white-space:nowrap;
que indica justo lo contrario.
Importando textos
Para importar páginas de texto en otros formatos de wiki se puede emplear una combinación de los programas pandoc y xclip, si lo que se desea es efectuar una edición directa de los mismos.
Página de inicio
La página de inicio de Mediawiki según la documentación está contenida dentro de la página Mediawiki:Mainpage del wiki. También aparece una referencia dentro de Mediawiki:Sitebar.
Instalando extensiones
Mediawiki dispone de una herramienta en línea para instalar extensiones individuales en la siguiente dirección:
Ref: Download MediaWiki extension
Los pasos a seguir tras instalar una extensión están descritos en la documentación oficial pero conviene recordar lo siguiente:
- Tras descargar y descomprimir el software es necesario activarlo en la configuración de Mediawiki. Basta con añadir al final del archivo LocalSettings.php la instrucción de carga.
- Después es obligado llamar al programa que realiza las actualizaciones, un script llamado Update.php o emplear el actualizador en línea (aunque no es aconsejable si la tarea va a ser muy larga en duración).
Errores
Archivo corrupto
Cuando se suben archivos a un sitio bajo control de Mediawiki puede aparecer una advertencia como
Este archivo está corrupto o la extensión indicada no se corresponde con el tipo de archivo.
que en realidad es un error grave porque el archivo permanece sin subir.
Mediawiki intenta detectar qué tipo de archivo estamos subiendo y rechaza con este tipo de error aquellos cuyo tipo MIME no coincide con la extensión.
Para indagar en las causas es necesario habilitar la depuración de errores y echarle un vistazo al archivo de registro de errores que en mi caso he situado en /var/log/mediawiki.log
.
Encontré este error en la construcción de una página de este wiki cuando intenté subir un programa ejemplo llamado nut-chroot-ctl renombrado como nut-chroot-ctl.txt precisamente para que pasase como archivo de texto. Un programa anterior (llamado nut-chroot-setup.txt) lo había hecho sin problemas, pero con éste no había manera:
File::getPropsFromPath: Getting file info for /tmp/php317uUM MimeMagic::__construct: loading mime types from /etc/mime.types MimeMagic::__construct: loading mime info from /var/lib/mediawiki/includes/mime.info MimeMagic::doGuessMimeType: shell script recognized as application/x-sh MimeMagic::guessMimeType: final mime type of /tmp/php317uUM: application/x-sh MediaHandler::getHandler: no handler found for application/x-sh. File::getPropsFromPath: /tmp/php317uUM loaded, 277 bytes, application/x-sh. MacBinary::loadHeader: header bytes 0 and 74 not null MimeMagic::doGuessMimeType: shell script recognized as application/x-sh MimeMagic::guessMimeType: final mime type of /tmp/php317uUM: application/x-sh mime: <application/x-sh> extension: <txt> UploadForm::verifyExtension: mime type application/x-sh mismatches file extension txt, rejectin g file OutputPage::sendCacheControl: private caching; ** Request ended normally
La solución consiste en tocar la configuración del wiki o plegarse a sus condiciones, renombrar el archivo para que tenga una extensión que corresponda y volver a subirlo ... siempre que esté entre los tipos permitidos.