Hace ya algún tiempo que os hablamos del sistema de foros Flarum, el cual me parece sencillo, moderno y funcional. Este sistema de foros es el que usamos en foro.vozidea.com, por eso he tenido que desarrollar una extensión para usar URLs amigables y mejorar el SEO.
Flarum por defecto elimina todos los caracteres especiales de los slugs, algo que funciona con idiomas como el inglés, pero que da problemas con otros idiomas como el español, alemán, etc. Por ejemplo, en el español usamos la letra "ñ" o las vocales con tilde, lo que lleva a la generación de slugs incompletos por parte de Flarum.
Sabemos que este sistema de foros todavía se encuentra en fase beta y le queda bastante camino por recorrer, pero poco a poco va mejorando.
El problema de transcripción de URLs en Flarum.
Básicamente el problema que nos encontrábamos sucedía cuando había caracteres especiales que forman parte de la URL. En este caso, estos caracteres se eliminan y se generan slugs incorrectos como los siguientes:
- Esto es España:
esto-es-espa-a
- El pájaro vivió muchos años:
el-p-jaro-vivi-muchos-a-os
Como podemos ver, esos slugs son terribles, ya que no están optimizados para el SEO, ya que son slugs sin significado propio. Este slug se almacena en la base de datos, concretamente en la tabla _discussions
.
La solución pasa por crear una extensión que genere un slug válido para idiomas como el español y que lo guarde en la base de datos. Esto es exactamente lo que se consigue con la extensión que os presento hoy.
Características de la extensión de URLs amigables de Flarum.
La técnica que se emplea en esta extensión para la transcripción de caracteres especiales, es la denominada "transliteration". Concretamente, esta extensión se basa en el funcionamiento del motor de transcripción que emplea WordPress. De este modo tenemos un código maduro y estable que por el momento no ha dado problemas.
Soporta idiomas como el español, francés, alemán, etc. Para idiomas con caracteres UTF-8, como el chino o el ruso, la extensión permite el uso de estos caracteres en los slugs, ya que su transcripción no es recomendable.
La extensión se llama flarum-ext-seoslugs
y el código fuente se puede examinar desde GitHub en https://github.com/Zeokat/flarum-ext-seoslugs.
¿Cómo instalar flarum-ext-seoslugs en nuestro foro Flarum?
Para la instalación de esta extensión seguiremos los mismos pasos que con el resto de extensiones. El método de instalación más sencillo es con Composer, ejecutando el comando:
composer require zeokat/flarum-ext-seoslugs
Activamos la extensión desde el panel de administrador y finalmente ejecutamos el comando para limpiar el cache:
php flarum cache:clear
.
Los slugs antiguos permanecerán invariables, sólo se aplicará la transcripción a las discusiones que se crean a partir de la activación de la extensión.