Clicky

Personaliza página de error 404 en Joomla

Redirigir la página standard de error 404 a una página personalizada

Error 404 mono sorprendidoEn este artículo veremos cómo hacer que nuestros usuarios no se sientan tan defraudados al encontrarse con la tan temida por los webmaster página de error 404 al no encontrar el servidor las Urls que por diversos motivos, por ejemplo un cambio de versión de Joomla!, continúan en las bases de datos de los buscadores.

Para Joomla 3.x ver este artículo: Una página personalizada de error 404 para Joomla 3.x

Para Joomla! 2.5.x

En primer lugar crearemos un artículo sin categoría al que daremos un nombre acorde, por ejemplo Error 404, y un alias similar, p.ej.  error-404. Hay en Internet si buscáis por "ejemplos de páginas error 404" gran cantidad de ellas en las que os podéis inspirar y adaptarlas al contenido de vuestros sitios.

Una vez creada averiguaremos la url de nuestra página, normalmente será sin la url amigable de este tipo:

http://www.xn--apaados-6za.es/index.php?option=com_content&view=article&id=73

Es decir la url principal del dominio y la dirección del artículo. El último número, en este caso el 73 es el identificador del artículo (ID) que podemos encontrar en la tabla de Contenido --> Gestor de Artículos

Dependiendo de vuestra plantilla buscaremos el archivo error.php que normalmente encontraréis en la ruta:

/templates/nombre-de-vuestro-template/error.php

El código php original del principio del archivo es el siguiente:

<?php
/**
 * @package	Joomla.Site
 * @copyright	Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
 * @license	GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;
$params = JFactory::getApplication()->getTemplate(true)->params;
$logo =  $params->get('logo');
$showRightColumn = 0;
$showleft = 0;
$showbottom = 0;
// get params
$color		= $params->get('templatecolor');
$navposition	= $params->get('navposition');
//get language and direction
$doc = JFactory::getDocument();
$this->language = $doc->language;
$this->direction = $doc->direction;
?>

Y lo dejaremos, después de hacer un respaldo del archivo, de la siguiente manera, incluyendo las líneas marcadas en rojo y poniendo la ID de nuestro artículo en lugar del 73:

<?php
/**
 * @package	Joomla.Site
 * @copyright	Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
 * @license	GNU General Public License version 2 or later; see LICENSE.txt
 */
defined('_JEXEC') or die;
if (!isset($this->error))
{
$this->error = JError::raiseWarning(404, JText::_('JERROR_ALERTNOAUTHOR'));
$this->debug = false;
}
$params = JFactory::getApplication()->getTemplate(true)->params;
$logo =  $params->get('logo');
$showRightColumn = 0;
$showleft = 0;
$showbottom = 0;
// get params
$color		= $params->get('templatecolor');
$navposition	= $params->get('navposition');
//get language and direction
$doc = JFactory::getDocument();
$this->language = $doc->language;
$this->direction = $doc->direction;
if (($this->error->getCode()) == '404')
{
header('Location: /index.php?option=com_content&view=article&id=73');
exit;
}
?>

Para Joomla 1.5

En Joomla 1.5 es algo más complicado, pero no mucho...

En primer lugar, abre el Administrador de artículos en tu sitio Joomla! y crea un nuevo artículo como hemos hecho para Joomla 2.5.x. Selecciona Sin categoría para la sección y categoría. Añade el contenido del artículo para el error 404 y haz click en el icono de guardar cerca de la parte superior derecha de la pantalla de edición del artículo.
 
Si lo deseas, crea un nuevo menú llamado errormenu o algo similar para agregar tu página de error 404 sin categorizar. Hago esto con el fin de tener la página de error permitida y publicada, sin embargo, cuando ponemos la asignación de menú seleccionaremos "No" para que mi menú no aparezca en las páginas de mi sitio web Joomla!, y si tienes el SEF habilitado puedes si lo deseas utilizar la Url amigable o SEF para acceder a la página 404.
 
Sea o no que hayas creado un menú exclusivamente para la página 404, es necesario crear un nuevo elemento de menú de tipo artículo único y seleccionar el artículo que hayas creado con el contenido de error 404. Luego copiaremos el texto del enlace: (URL) - en mi caso index.php?option=com_content&view=article&id=40 - desde el menú de nueva creación para su uso en los siguientes pasos.

menu para error 404
 
Ahora necesitamos localizar el archivo error.php  dentro de la instalación de tu sitio Joomla! y copiarlo en el directorio de tu plantilla. El archivo se encuentra en:

<joomla_dir>/templates/system/error.php

Copia el archivo error.php en el directorio de tu plantilla a:

<joomla_dir>/templates/tu-template/error.php

Abre ahora el archivo error.php que acabas de copiar en el directorio de tu plantilla y agrega las líneas que aparecen en rojo cambiando el 40 por el ID de tu artículo de error 404 como hicimos con Joomla 2.5.x :

<?php
/**
 * @copyright	Copyright (C) 2005 - 2010 Open Source Matters. All rights reserved.
 * @license		GNU/GPL, see LICENSE.php
 * Joomla! is free software. This version may have been modified pursuant
 * to the GNU General Public License, and as distributed it includes or
 * is derivative of works licensed under the GNU General Public License or
 * other free or open source software licenses.
 * See COPYRIGHT.php for copyright notices and details.
 */
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
if (($this->error->code) == '404') 

{

 header('Location: /index.php?option=com_content&view=article&id=40');

 exit;

 } if (!isset($this->error)) { $this->error = JError::raiseWarning( 403, JText::_('ALERTNOTAUTH') ); $this->debug = false; } ?>

Por último, buscaremos el archivo robots.txt en el directorio raíz de tu sitio Joomla!, lo editamos y añadimos la siguiente línea (cambiando la Url por la de tu artículo):

Disallow: /index.php?option=com_content&view=article&id=40

Si has seguido estos pasos, debería tener ahora una página de error 404 personalizada para tus sitios web Joomla!. Puedes notar, sin embargo, que la nueva página 404 personalizada se mostrará en los resultados de búsqueda de tu sitio web.
 
Sigue estos pasos para que la página de error 404 no aparezca en los resultados de búsqueda de tu sitio web Joomla! 1.5:

 •  Abre el Administrador de complementos (Extensiones> Gestor de plugins) de la pantalla de administración en la barra de herramientas de Joomla!.
 •  Busca el elemento denominado Search - Content, abrélo para editar sus propiedades.
 •  En el lado derecho, bajo los parámetros del plugin, establece Artículos sin clasificar seleccionando "No"

plugin buscar en contenidos Joomla

Ahora la página 404 no se mostrará en tus resultados de búsqueda, sin embargo, esto desactivará TODO el contenido de la sección y Categoría, así que si tienes un artículo o más artículos que sean Sin Categoría, utilizando este método no se podrán realizar búsquedas.
 
Si tu sitio web Joomla! sirve también contenidos que no son de Joomla, se puede añadir la siguiente línea a tu archivo .htaccess (Apache), que te  permitirá utilizar tu página de error 404 personalizada de Joomla! para el sitio web completo:

ErrorDocument 404 /index.php?option=com_content&view=article&id=40
## (cambiar por la Url de tu artículo)

Para probarlos, y después de limpiar la cache de Joomla! si la tenéis activada, eliminar en el navegador parte de la url de cualquier página vuestra y veréis que aparecerá la página de error 404 personalizada que habéis creado al principio.

Jesus_Caceres