Prestashop redirecciones CMS no manteninete content_only

En Prestashop puedes crear contenido estático, páginas CMS con su propio minieditor CMS. Lo podeis encontrar en el backend / herramientas / CMS. Este contenido puede ser estar traducido a varios idiomas y es aquí donde puede que se nos presente un pequeño problema que vamos a resolver.

Si por ejemplo me creo un contenido CMS de informacion de mi tienda y lo pongo en ingles y castellano, con el ID = 2, la url quedaría algo así
[shell]
http://localhost/prestashop/content/2-informacion
[/shell]

Vale ahora si desde el frontend de la tienda visito la url, se redirijá a castellano o a ingles y quedará algo como esto :

[shell]
# castellano
http://localhost/prestashop/es/content/2-informacion
# ingles
http://localhost/prestashop/en/content/2-informacion
[/shell]

Con lo que si yo maqueto mi tienda con que ponga el primer enlace en un link para que la gente consulte la información de mi tienda no tendré que preocupar del idioma del visitante de la web, ya que se redirijá según el idioma que tenga almacenado en su cookie.

Pero imaginate que quieres que esta información aparezca en una ventana modal con jquery, en ese caso sólo queremos el contenido sin cabeceras, ni menús ni piés de página. Para eso se usa el parámetro content_only=1. Pues bien este parámetro no se mantiene en las redirecciones y para ello tenemos que crear un fichero en override/controllers/CMSController.php:

[shell]
< ?php class CMSController extends CMSControllerCore { public function canonicalRedirection() { // Automatically redirect to the canonical URL if the current in is the right one // $_SERVER['HTTP_HOST'] must be replaced by the real canonical domain if (Configuration::get('PS_CANONICAL_REDIRECT') && strtoupper($_SERVER['REQUEST_METHOD']) == 'GET') { if (Validate::isLoadedObject($this->cms) AND $canonicalURL = self::$link->getCMSLink($this->cms)){

if (!preg_match(‘/^’.Tools::pRegexp($canonicalURL, ‘/’).'([&?].*)?$/’, Tools::getProtocol().$_SERVER[‘HTTP_HOST’].$_SERVER[‘REQUEST_URI’]))
{

if ( Tools::getValue(‘content_only’) == 1 ){
$canonicalURL .= «?content_only=1»;

}

header(‘HTTP/1.0 301 Moved’);
header(‘Cache-Control: no-cache’);
if (_PS_MODE_DEV_)
die(‘[Debug] This page has moved
Please use the following URL instead: ‘.$canonicalURL.’‘);

Tools::redirectLink($canonicalURL);
}
}

if (Validate::isLoadedObject($this->cms_category) AND $canonicalURL = self::$link->getCMSCategoryLink($this->cms_category))
if (!preg_match(‘/^’.Tools::pRegexp($canonicalURL, ‘/’).'([&?].*)?$/’, Tools::getProtocol().$_SERVER[‘HTTP_HOST’].$_SERVER[‘REQUEST_URI’]))
{
header(‘HTTP/1.0 301 Moved’);
header(‘Cache-Control: no-cache’);
if (_PS_MODE_DEV_ )
die(‘[Debug] This page has moved
Please use the following URL instead: ‘.$canonicalURL.’‘);
Tools::redirectLink($canonicalURL);
}
}
}

}
[/shell]

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

 

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.