Quitar /es/ (ó /idioma/ predefinido) de la URL amigable de Prestashop

Esta modificación ha sido realizada en Prestashop 1.5.3.1. Supongo que puede funcionar para toda la rama 1.5.x de Prestashop. En el archivo /classes/Link.php modificamos la función «getLangLink» agregando:

[php]<br /> if(!$id_lang){<br /> if(Configuration::get(‘PS_LANG_DEFAULT’, null, $shop->id_shop_group, $shop->id) == $context->language->id)<br /> return »;<br /> }<br /> else{<br /> if($id_lang == Configuration::get(‘PS_LANG_DEFAULT’, null, $shop->id_shop_group, $shop->id))<br /> return »;<br /> }<br />[/php]

Quedando la función así:

[php]<br /> protected function getLangLink($id_lang = null, Context $context = null)<br /> {<br /> if (!$context)<br /> $context = Context::getContext();<br /><br /> if (!$this->allow || !Language::isMultiLanguageActivated() )<br /> return »;<br /><br /> if(!$id_lang){<br /> if(Configuration::get(‘PS_LANG_DEFAULT’, null, $shop->id_shop_group, $shop->id) == $context->language->id)<br /> return »;<br /> }<br /> else{<br /> if($id_lang == Configuration::get(‘PS_LANG_DEFAULT’, null, $shop->id_shop_group, $shop->id))<br /> return »;<br /> }<br /> if (!$id_lang)<br /> $id_lang = $context->language->id;<br /> return Language::getIsoById($id_lang).’/’;<br /><br /> }<br />[/php]

También deberemos modificar la función «switchLanguage» de la clase Tools en /classes/Tools.php agregando:

[php]<br />…<br /> else<br /> $_GET[‘id_lang’] = (int)Configuration::get(‘PS_LANG_DEFAULT’, null, $shop->id_shop_group, $shop->id);<br />…<br />[/php]

Quedando la función así:

[php]<br /> public static function switchLanguage(Context $context = null)<br /> {<br /> if (!$context)<br /> $context = Context::getContext();<br /><br /> // Install call the dispatcher and so the switchLanguage<br /> // Stop this method by checking the cookie<br /> if (!isset($context->cookie))<br /> return;<br /><br /> if (($iso = Tools::getValue(‘isolang’)) && Validate::isLanguageIsoCode($iso) && ($id_lang = (int)Language::getIdByIso($iso)))<br /> $_GET[‘id_lang’] = $id_lang;<br /> else<br /> $_GET[‘id_lang’] = (int)Configuration::get(‘PS_LANG_DEFAULT’, null, $shop->id_shop_group, $shop->id);<br /><br /> // update language only if new id is different from old id<br /> // or if default language changed<br /> $cookie_id_lang = $context->cookie->id_lang;<br /> $configuration_id_lang = Configuration::get(‘PS_LANG_DEFAULT’);<br /> if ((($id_lang = (int)Tools::getValue(‘id_lang’)) && Validate::isUnsignedId($id_lang) && $cookie_id_lang != (int)$id_lang)<br /> || (($id_lang == $configuration_id_lang) && Validate::isUnsignedId($id_lang) && $id_lang != $cookie_id_lang))<br /> {<br /> $context->cookie->id_lang = $id_lang;<br /> $language = new Language($id_lang);<br /> if (Validate::isLoadedObject($language))<br /> $context->language = $language;<br /><br /> $params = $_GET;<br /> if (Configuration::get(‘PS_REWRITING_SETTINGS’) || !Language::isMultiLanguageActivated())<br /> unset($params[‘id_lang’]);<br /> }<br /> }<br />[/php]