Riva
Папочка
- Регистрация
- 2 Мар 2013
- Сообщения
- 560
- Реакции
- 660
- Автор темы
- #1
После обновления до 1.7.8.8 перестал работать fix убирающий префикс дефолтного языка. Работает везде кроме стандартного оформления заказа. С одностаничниками норм. v2.1.1-fsadvancedurl и ecm_rpd 0.0.1 точно так же ведёт себя. Как побороть?
/override/classes/Link.php
/override/classes/Tools.php
/override/classes/Link.php
Код:
<?php
class Link extends LinkCore
{
protected function getLangLink($idLang = null, Context $context = null, $idShop = null)
{
static $psRewritingSettings = null;
if ($psRewritingSettings === null) {
$psRewritingSettings = (int) Configuration::get('PS_REWRITING_SETTINGS', null, null, $idShop);
}
if (!$context) {
$context = Context::getContext();
}
if ((!$this->allow && in_array($idShop, [$context->shop->id, null])) || !Language::isMultiLanguageActivated($idShop) || !$psRewritingSettings) {
return '';
}
if (!$idLang) {
$idLang = $context->language->id;
}
// return Language::getIsoById($idLang) . '/';
if (Configuration::get('PS_LANG_DEFAULT') == $idLang) {
return '';
}
else {
return Language::getIsoById($idLang) . '/';
}
}
}
/override/classes/Tools.php
Код:
<?php
class Tools extends ToolsCore
{
public static function switchLanguage(Context $context = null)
{
if (null === $context) {
$context = Context::getContext();
}
// On PrestaShop installations Dispatcher::__construct() gets called (and so Tools::switchLanguage())
// Stop in this case by checking the cookie
if (!isset($context->cookie)) {
return;
}
// if (
// ($iso = Tools::getValue('isolang')) &&
// Validate::isLanguageIsoCode($iso) &&
// ($id_lang = (int) Language::getIdByIso($iso))
// ) {
// $_GET['id_lang'] = $id_lang;
// }
if (
($iso = Tools::getValue('isolang')) &&
Validate::isLanguageIsoCode($iso) &&
($id_lang = (int) Language::getIdByIso($iso))
) {
$_GET['id_lang'] = $id_lang;
}
else {
$_GET['id_lang'] = (int) Configuration::get('PS_LANG_DEFAULT');
}
// Only switch if new ID is different from old ID
$newLanguageId = (int) Tools::getValue('id_lang');
if (
Validate::isUnsignedId($newLanguageId) &&
$newLanguageId !== 0 &&
$context->cookie->id_lang !== $newLanguageId
) {
$context->cookie->id_lang = $newLanguageId;
$language = new Language($newLanguageId);
if (Validate::isLoadedObject($language) && $language->active && $language->isAssociatedToShop()) {
$context->language = $language;
}
}
Tools::setCookieLanguage($context->cookie);
}
}
Последнее редактирование: