Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


Recommended Posts

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

 

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

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

 

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

Змінено користувачем viair
Надіслати
Поділитися на інших сайтах


Что такое 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
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.