Перейти к содержанию
viair

OC2 - Принудительно задать код языка для страницы заказов

Рекомендуемые сообщения

Ребята, Всем привет!

 

Столкнулся со следующей задачей, в мультиязычном сайте при переходе пользователем в "route=checkout/checkout" нужно принудительно задать определённый код языка.

Цель: передать в контроллер заказа и соответственно залить в базу все сопутствующие данные по нему(заказу), исключив влияние языка заданного пользователем в FE.

 

Какие варианты предложите?

Изменено пользователем viair

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что такое FE

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Что такое FE

фронтенд наверное 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в принципе это не очень затруднительно

 

Но... каков ваш уровень?

 

Перед тем как добавить в заказ, нужно переключить язык на нужный, затем его восстановить

Изменено пользователем chukcha

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Перед тем как добавить в заказ, нужно переключить язык на нужный, затем его восстановить

Ну, в общем-то так я примерно и предпологал. :) Если я правильно вник, все необходимые манипуляции нужно проводить в checkout/confirm контроллере?

Вопрос: где конкретно ему стравить айдишник или код языка? Или нужно ещё с самим Order контроллером танцевать?

Изменено пользователем viair

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Если я правильно вник, все необходимые манипуляции нужно проводить в checkout/confirm контроллере

 

На первый взгляд - да

Язык, нужно менять через config->set

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

chukcha Спасибо за наводку!

 

Накидал кое что, в результате - язык поменялся только для данных товаров и их опций прикреплённых к заказу, всё, что касается методов доставки и оплаты, а так же тексты VAT Total и пр. остались на языке пользователя заданном в FE. В свою очередь, контроллер checkout игнорирует set('config_language') и как я понял забирает код языка из $this->session->data['language'].

Поробовал принудительно задать значение для session->data['language'] для checkout , результат - сменился язык для методов достки и оплаты в шаблоне. Есть возможность запоминать язык FE пользователя во временном поле массива сессии в checkout  и там же подменять session->data['language'] на свой, и соответственно отменять его в CheckoutConfirm подменяя ранее запомненным значением из временного поля в массиве сессии. Это работает почти как ожидалось, Но, чувствую, что как-то это всё не совсем правильно. Плюс, есть нюанс, т.к язык подменяется после перехода в Checkout, основной шаблон всё-же остаётся на языке пользователя.

 

Какие варианты предложите? 

 

Вот вариант который получился: (Кривой)

 


/controller/checkout/confirm.php

class ControllerCheckoutConfirm extends Controller {

public function index() {

// Получаем дефолтный FE язык магазина

$this->load->model('setting/setting');

$store_settings_config = $this->model_setting_setting->getSetting("config", $this->config->get('config_store_id'));

// Здесь Нужно нативным методом где то-то добыть id языка по коду, который вернулся в $store_settings_config['config_language']

$this->config->set('config_language_id', 3); // <-- И вставить его здесь вместо значения "3"

$this->config->set('config_language', $store_settings_config['config_language']);

......................

$this->session->data['language'] = $this->session->data['user_fe_language'];

unset($this->session->data['user_fe_language']);

} // END index

} // END class


/controller/checkout/checkout.php

class ControllerCheckoutCheckout extends Controller {

public function index() {

// Получаем дефолтный язык для FE магазина

$this->load->model('setting/setting');

$store_settings_config = $this->model_setting_setting->getSetting("config", $this->config->get('config_store_id'));

// Получаем текущий (пользовательский) FE язык

$this->session->data['user_fe_language'] = $this->config->get('config_language'); // <-- Запоминаем

$this->session->data['language'] = $store_settings_config['config_language']; // <-- Подменяем

Изменено пользователем viair

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Можно в  таком случае в хедере обрабатывать, проверять $this->request->get('route') и в зависимости от этого назначать язык. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.