viair Опубліковано: 25 березня 2016 Share Опубліковано: 25 березня 2016 (змінено) Ребята, Всем привет! Столкнулся со следующей задачей, в мультиязычном сайте при переходе пользователем в "route=checkout/checkout" нужно принудительно задать определённый код языка. Цель: передать в контроллер заказа и соответственно залить в базу все сопутствующие данные по нему(заказу), исключив влияние языка заданного пользователем в FE. Какие варианты предложите? Змінено 25 березня 2016 користувачем viair Надіслати Поділитися на інших сайтах More sharing options...
chukcha Опубліковано: 25 березня 2016 Share Опубліковано: 25 березня 2016 Что такое FE Надіслати Поділитися на інших сайтах More sharing options... ArtemPitov Опубліковано: 25 березня 2016 Share Опубліковано: 25 березня 2016 Что такое FE фронтенд наверное Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 березня 2016 Share Опубліковано: 25 березня 2016 (змінено) в принципе это не очень затруднительно Но... каков ваш уровень? Перед тем как добавить в заказ, нужно переключить язык на нужный, затем его восстановить Змінено 25 березня 2016 користувачем chukcha Надіслати Поділитися на інших сайтах More sharing options... viair Опубліковано: 26 березня 2016 Автор Share Опубліковано: 26 березня 2016 (змінено) Перед тем как добавить в заказ, нужно переключить язык на нужный, затем его восстановитьНу, в общем-то так я примерно и предпологал. :) Если я правильно вник, все необходимые манипуляции нужно проводить в checkout/confirm контроллере?Вопрос: где конкретно ему стравить айдишник или код языка? Или нужно ещё с самим Order контроллером танцевать? Змінено 26 березня 2016 користувачем viair Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 березня 2016 Share Опубліковано: 26 березня 2016 Если я правильно вник, все необходимые манипуляции нужно проводить в checkout/confirm контроллере На первый взгляд - да Язык, нужно менять через config->set Надіслати Поділитися на інших сайтах More sharing options... viair Опубліковано: 27 березня 2016 Автор Share Опубліковано: 27 березня 2016 (змінено) 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']; // <-- Подменяем Змінено 27 березня 2016 користувачем viair Надіслати Поділитися на інших сайтах More sharing options... efremovav Опубліковано: 30 березня 2016 Share Опубліковано: 30 березня 2016 Можно в таком случае в хедере обрабатывать, проверять $this->request->get('route') и в зависимости от этого назначать язык. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам OC2 - Принудительно задать код языка для страницы заказов Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
ArtemPitov Опубліковано: 25 березня 2016 Share Опубліковано: 25 березня 2016 Что такое FE фронтенд наверное Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 25 березня 2016 Share Опубліковано: 25 березня 2016 (змінено) в принципе это не очень затруднительно Но... каков ваш уровень? Перед тем как добавить в заказ, нужно переключить язык на нужный, затем его восстановить Змінено 25 березня 2016 користувачем chukcha Надіслати Поділитися на інших сайтах More sharing options... viair Опубліковано: 26 березня 2016 Автор Share Опубліковано: 26 березня 2016 (змінено) Перед тем как добавить в заказ, нужно переключить язык на нужный, затем его восстановитьНу, в общем-то так я примерно и предпологал. :) Если я правильно вник, все необходимые манипуляции нужно проводить в checkout/confirm контроллере?Вопрос: где конкретно ему стравить айдишник или код языка? Или нужно ещё с самим Order контроллером танцевать? Змінено 26 березня 2016 користувачем viair Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 березня 2016 Share Опубліковано: 26 березня 2016 Если я правильно вник, все необходимые манипуляции нужно проводить в checkout/confirm контроллере На первый взгляд - да Язык, нужно менять через config->set Надіслати Поділитися на інших сайтах More sharing options... viair Опубліковано: 27 березня 2016 Автор Share Опубліковано: 27 березня 2016 (змінено) 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']; // <-- Подменяем Змінено 27 березня 2016 користувачем viair Надіслати Поділитися на інших сайтах More sharing options... efremovav Опубліковано: 30 березня 2016 Share Опубліковано: 30 березня 2016 Можно в таком случае в хедере обрабатывать, проверять $this->request->get('route') и в зависимости от этого назначать язык. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам OC2 - Принудительно задать код языка для страницы заказов Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
chukcha Опубліковано: 25 березня 2016 Share Опубліковано: 25 березня 2016 (змінено) в принципе это не очень затруднительно Но... каков ваш уровень? Перед тем как добавить в заказ, нужно переключить язык на нужный, затем его восстановить Змінено 25 березня 2016 користувачем chukcha Надіслати Поділитися на інших сайтах More sharing options... viair Опубліковано: 26 березня 2016 Автор Share Опубліковано: 26 березня 2016 (змінено) Перед тем как добавить в заказ, нужно переключить язык на нужный, затем его восстановитьНу, в общем-то так я примерно и предпологал. :) Если я правильно вник, все необходимые манипуляции нужно проводить в checkout/confirm контроллере?Вопрос: где конкретно ему стравить айдишник или код языка? Или нужно ещё с самим Order контроллером танцевать? Змінено 26 березня 2016 користувачем viair Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 26 березня 2016 Share Опубліковано: 26 березня 2016 Если я правильно вник, все необходимые манипуляции нужно проводить в checkout/confirm контроллере На первый взгляд - да Язык, нужно менять через config->set Надіслати Поділитися на інших сайтах More sharing options... viair Опубліковано: 27 березня 2016 Автор Share Опубліковано: 27 березня 2016 (змінено) 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']; // <-- Подменяем Змінено 27 березня 2016 користувачем viair Надіслати Поділитися на інших сайтах More sharing options... efremovav Опубліковано: 30 березня 2016 Share Опубліковано: 30 березня 2016 Можно в таком случае в хедере обрабатывать, проверять $this->request->get('route') и в зависимости от этого назначать язык. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам OC2 - Принудительно задать код языка для страницы заказов
viair Опубліковано: 26 березня 2016 Автор Share Опубліковано: 26 березня 2016 (змінено) Перед тем как добавить в заказ, нужно переключить язык на нужный, затем его восстановитьНу, в общем-то так я примерно и предпологал. :) Если я правильно вник, все необходимые манипуляции нужно проводить в checkout/confirm контроллере?Вопрос: где конкретно ему стравить айдишник или код языка? Или нужно ещё с самим Order контроллером танцевать? Змінено 26 березня 2016 користувачем viair Надіслати Поділитися на інших сайтах More sharing options...
chukcha Опубліковано: 26 березня 2016 Share Опубліковано: 26 березня 2016 Если я правильно вник, все необходимые манипуляции нужно проводить в checkout/confirm контроллере На первый взгляд - да Язык, нужно менять через config->set Надіслати Поділитися на інших сайтах More sharing options... viair Опубліковано: 27 березня 2016 Автор Share Опубліковано: 27 березня 2016 (змінено) 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']; // <-- Подменяем Змінено 27 березня 2016 користувачем viair Надіслати Поділитися на інших сайтах More sharing options... efremovav Опубліковано: 30 березня 2016 Share Опубліковано: 30 березня 2016 Можно в таком случае в хедере обрабатывать, проверять $this->request->get('route') и в зависимости от этого назначать язык. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
viair Опубліковано: 27 березня 2016 Автор Share Опубліковано: 27 березня 2016 (змінено) 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']; // <-- Подменяем Змінено 27 березня 2016 користувачем viair Надіслати Поділитися на інших сайтах More sharing options...
efremovav Опубліковано: 30 березня 2016 Share Опубліковано: 30 березня 2016 Можно в таком случае в хедере обрабатывать, проверять $this->request->get('route') и в зависимости от этого назначать язык. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
Recommended Posts