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 una respuesta