Quitar ids en las url de artículos Joomla 3.7

Cómo eliminar los IDs de las URLs en Joomla 3.7

27 abril, 2017 3 comentarios

Hace apenas un par de días vio la luz la versión 3.7 de Joomla.  Tal y como el equipo había adelantado, estaba programada una mejora para eliminar  los ids de las URLs de forma nativa. Es una mejora que desde Kadum Desarrollo web nos parecía reseñable y así os lo hicimos saber en este artículo. Sin embargo, debido a que han encontrado inconvenientes si se activaba en algunas webs en producción, el equipo de Joomla ha preferido no incluirlo en esta versión y seguir trabajando en ello.

Si eres de los que estabas deseando actualizar tu versión de Joomla para poder quitar fácilmente los identificadores en las direcciones URL y te preguntas cómo hacerlo ahora, sigue leyendo, que te explicamos dos sencillas maneras de hacerlo.

Vamos explicar dos métodos para quitar estos ids:

Modificar el fichero router.php

Al igual que sucedía con anterioridad, hemos de modificar manualmente el fichero router.php. Para ello, hemos de acceder a:
/components/com_content/router.php

En las versiones anteriores de Joomla, se tenía que modificar:

$params->get('sef_advanced_link', 0);

Por:

$params->get('sef_advanced_link', 1);

Sin embargo, ahora las modificaciones en ese fichero son:

if ($params->get('sef_advanced', 0)); //line 48

Por

//if ($params->get('sef_advanced', 0))
$this->noIDs = true;
$sef_advanced = true;
if ($sef_advanced)

 

De esta forma, se consigue que URLs del tipo:
www.mi-pagina-web.es/andalucia/1-cordoba
Automáticamente, omitan el id en la url y pasen a:
www.mi-pagina-web.es/andalucia/cordoba

Modificar el fichero config.xml

Otra posibilidad sería modificar el fichero de configuración config.xml del componente. En este fichero se pueden establecer valores para los atributos del objeto params, de forma que se podría añadir la opción de establecer los valor para sef_ids y sef_advanced.

Se debe acceder al fichero:
administrator/components/com_content/config.xml

Y, dentro del <fieldset name=”integration”, añadir las líneas de código (en torno a la línea 1027):

<field
 name="sef_advanced"
 type="radio"
 class="btn-group btn-group-yesno"
 default="0"
 label="URL Routing"
 description="Modern Routing enables advanced features but may change your URLs. Legacy routing ensures full compatibility for existing sites. This is configured per component."
 filter="integer">
 <option value="1">Modern</option>
 <option value="0">Legacy</option>
</field>

<field
 name="sef_ids"
 type="radio"
 class="btn-group btn-group-yesno"
 default="0"
 label="Remove IDs from URLs"
 description="Remove the IDs from the URLs of this component."
 showon="sef_advanced:1"
 filter="integer">
 <option value="1">JYES</option>
 <option value="0">JNO</option>
</field>

Tal y como se aprecia en la siguiente imagen:

 

Modificar config.xml

Modificar config.xml

De esta forma, podremos acceder a las opciones de configuración del componente content:

  • A través del botón Options dentro Content > Articles
  • O bien, a través de System > Global Configuration > Articles

Y, en la pantalla similar a la siguiente imagen, seleccionar:

  • El valor Modern para el campo URL Routing. Así se establece a 1 el valor para sef_advanced
  • y el valor para la opción, Remove IDs from URLs. Así se establece a 1 el valor para sef_ids
Quitar IDs de las URLs

Quitar IDs de las URLs

 

Mientras el equipo de Joomla pone en marcha la mejora prevista que haga que la eliminación del Id sea de forma nativa, podéis escoger cualquiera de estos dos métodos para  la versión 3.7.

Desde Kadum desarrollo web, ¡esperamos que este tips & tricks os sirva de ayuda!
Si te suscribes a nuestro Facebook o le echas un vistazo a nuestro Google plus o twitter, te mantendremos informado de nuestras novedades.

Volver al blog

Comentarios (3)

Eloy dijo:

Me ha venido genial.
Hasta ahora con crear un único enlace a cada artículo funcionaban sin prefijo todos los botones de leer más, por ejemplo, pero me he topado con un Joomla recien actualizado que seguía añadiendo esos prefijos.
He hecho la segunda opción, ¿habrá que volver a modificar config.xml tras en cada actualización?
Muchas gracias! :)

    Eloy dijo:

    Lástima que en el módulo “Artículos – Noticias de actualidad” los links ahora muestran “?view=article&id=:”

    El primer método de editar router.php no me ha funcionado, no sé si será por el update 3.7.1

    Laura dijo:

    Hola, Eloy:
    Gracias por tu comentarios.
    Exacto, cada vez que se realiza una actualización de Joomla es necesario repetir alguna de las dos opciones.
    En cada actualización, Joomla reescribe sus ficheros, incluyendo: router.php y config.xml. Por lo que, al actualizar a la nueva versión, Joomla 3.7.1, tienes que volver a modificar el config.xml (si optas por la segunda opción)

    Hemos editado el artículo para hacer funcional la primera opción (Modificar el fichero router.php). De modo que el condicional que aparece en torno a la línea 48 de router.php

    if ($params->get('sef_advanced', 0)) 

    Se sustituye por:

    //if ($params->get('sef_advanced', 0))
    $this->noIDs = true;
    $sef_advanced = true;
    if ($sef_advanced)
    

    Respecto al módulo “Artículos – Noticias de actualidad”, tras volver a modificar tu fichero router.php o config.xml, ¿has comprobado si tienes activadas las URL amigables dentro de Configuración del sitio > Configuración SEO?

Leave a Reply to Eloy Cancelar