max1985 Опубліковано: 16 липня 2018 Share Опубліковано: 16 липня 2018 Здравствуйте! Подскажите пожалуйста как реализовать выбор Группы пользователей в шапке сайта. На примере как реализовано выбор валюты. Надіслати Поділитися на інших сайтах More sharing options... Ulv Опубліковано: 16 липня 2018 Share Опубліковано: 16 липня 2018 Версия какая стора? Для каких целей? Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 16 липня 2018 Автор Share Опубліковано: 16 липня 2018 ocStore 2.3.0.2.3 Для того чтобы пользователь мог выбрать группу пользователей и видеть свои цены. Надіслати Поділитися на інших сайтах More sharing options... Ulv Опубліковано: 16 липня 2018 Share Опубліковано: 16 липня 2018 Сделать копии файлов model/currency.php, controller/currency.php, view/theme/*/common/currency.tpl, language/russian/currency.php, system/library/currency.php В индексном файле добавить $registry->set('customer_group', new CustonerGroup($registry)); Заменить в названии классов, Currency на UserGroup, переименовать файлы. В модели описать выборку из БД групп, в контроллере сделать вывод этой выборки в массив и сделать вывод этого в шаблоне tpl. В файле system/library/currency.php задавать куки уже для групп.. Поверхностно. Надіслати Поділитися на інших сайтах More sharing options... krumax Опубліковано: 16 липня 2018 Share Опубліковано: 16 липня 2018 Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 17 липня 2018 Автор Share Опубліковано: 17 липня 2018 (змінено) 16 часов назад, Ulv сказал: Сделать копии файлов model/currency.php, controller/currency.php, view/theme/*/common/currency.tpl, language/russian/currency.php, system/library/currency.php В индексном файле добавить $registry->set('customer_group', new CustonerGroup($registry)); Заменить в названии классов, Currency на UserGroup, переименовать файлы. В модели описать выборку из БД групп, в контроллере сделать вывод этой выборки в массив и сделать вывод этого в шаблоне tpl. В файле system/library/currency.php задавать куки уже для групп.. Поверхностно. Сделал как Вы посоветовали. Не нашел только файла system/library/currency.php В итоге в шапке появился выбор. Но есть несколько проблем. 1. Выдает одну ошибку Notice: Undefined index: customer. Ругается на эту строчку: $data['name'] = $this->session->data['customer']; 2. Не выводит рядом с формой текущую группу. Наверно не понимает такое условие: <?php if ($customer['name'] == $name) { ?> 3. Я так понимаю не выбирает и не меняет группу. Вот что у меня сейчас в файлах: Контроллер Спойлер <?php class ControllerCommonCustomer extends Controller { public function index() { $this->load->language('common/customer'); $data['text_customer'] = $this->language->get('text_customer'); $data['action'] = $this->url->link('common/customer/customer', '', isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))); $data['name'] = $this->session->data['customer']; $this->load->model('localisation/customer'); $data['currencies'] = array(); $results = $this->model_localisation_customer->getCurrencies(); foreach ($results as $result) { if ($result['name']) { $data['currencies'][] = array( 'name' => $result['name'] ); } } if (!isset($this->request->get['route'])) { $data['redirect'] = $this->url->link('common/home'); } else { $url_data = $this->request->get; unset($url_data['_route_']); $route = $url_data['route']; unset($url_data['route']); $url = ''; if ($url_data) { $url = '&' . urldecode(http_build_query($url_data, '', '&')); } $data['redirect'] = $this->url->link($route, $url, isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))); } return $this->load->view('common/customer', $data); } public function customer() { if (isset($this->request->post['name'])) { $this->session->data['customer'] = $this->request->post['name']; unset($this->session->data['shipping_method']); unset($this->session->data['shipping_methods']); } if (isset($this->request->post['redirect'])) { $this->response->redirect($this->request->post['redirect']); } else { $this->response->redirect($this->url->link('common/home')); } } } Модель Спойлер <?php class ModelLocalisationCustomer extends Model { public function getCustomerByName($customer) { $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "customer_group_description WHERE name = '" . $this->db->escape($customer) . "'"); return $query->row; } public function getCurrencies() { $customer_data = $this->cache->get('customer'); if (!$customer_data) { $customer_data = array(); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer_group_description ORDER BY name ASC"); foreach ($query->rows as $result) { $customer_data[$result['name']] = array( 'customer_group_id' => $result['customer_group_id'], 'language_id' => $result['language_id'], 'name' => $result['name'], 'description' => $result['description'] ); } $this->cache->set('customer', $customer_data); } return $customer_data; } } Темплейт Спойлер <?php if (count($currencies) > 1) { ?> <div class="pull-left"> <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form-customer"> <div class="btn-group"> <button class="btn btn-link dropdown-toggle" data-toggle="dropdown"> <?php foreach ($currencies as $customer) { ?> <?php if ($customer['name'] == $name) { ?> <strong><?php echo $customer['name']; ?></strong> <?php } ?> <?php } ?> <span class="hidden-xs hidden-sm hidden-md"><?php echo $text_customer; ?></span> <i class="fa fa-caret-down"></i></button> <ul class="dropdown-menu"> <?php foreach ($currencies as $customer) { ?> <li><button class="customer-select btn btn-link btn-block" type="button" name="<?php echo $customer['name']; ?>"><?php echo $customer['name']; ?></button></li> <?php } ?> </ul> </div> <input type="hidden" name="name" value="" /> <input type="hidden" name="redirect" value="<?php echo $redirect; ?>" /> </form> </div> <?php } ?> Подскажите куда копать! Спасибо! Змінено 17 липня 2018 користувачем max1985 Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 17 липня 2018 Автор Share Опубліковано: 17 липня 2018 (змінено) Часть проблем ушла при помощи Ulv. Теперь выбирается Группа и сохраняется при переходах по страницам, но цены на сайте не меняются, хотя при выборе группы идет обновление страницы. На данный момент так: Контроллер Спойлер <?php class ControllerCommonCustomer extends Controller { public function index() { $this->load->language('common/customer'); $data['text_customer'] = $this->language->get('text_customer'); $data['action'] = $this->url->link('common/customer/customer', '', isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))); $this->load->model('localisation/customer'); //var_dump($this->config->get('customer_group_default')); if(empty($this->session->data['customer_group_id'])){ $data['code'] = $this->session->data['customer_group_id'] = $this->config->get('config_customer_group_id'); }else{ $data['code'] = $this->session->data['customer_group_id']; } //var_dump($this->config->get('customer_group_default')); $data['customer_groups'] = array(); $results = $this->model_localisation_customer->getCurrencies(); foreach ($results as $result) { if ($result['name']) { $data['customer_groups'][] = array( 'id' => $result['customer_group_id'], 'name' => $result['name'] ); } } if (!isset($this->request->get['route'])) { $data['redirect'] = $this->url->link('common/home'); } else { $url_data = $this->request->get; unset($url_data['_route_']); $route = $url_data['route']; unset($url_data['route']); $url = ''; if ($url_data) { $url = '&' . urldecode(http_build_query($url_data, '', '&')); } $data['redirect'] = $this->url->link($route, $url, isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))); } return $this->load->view('common/customer', $data); } public function customer() { if (isset($this->request->post['code'])) { $this->session->data['customer_group_id'] = $this->request->post['code']; } if (isset($this->request->post['redirect'])) { $this->response->redirect($this->request->post['redirect']); } else { $this->response->redirect($this->url->link('common/home')); } } } Модель Спойлер <?php class ModelLocalisationCustomer extends Model { public function getCustomerByName($customer) { $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "customer_group_description WHERE name = '" . $this->db->escape($customer) . "'"); return $query->row; } public function getCurrencies() { $customer_data = $this->cache->get('customer'); if (!$customer_data) { $customer_data = array(); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer_group_description ORDER BY name ASC"); foreach ($query->rows as $result) { $customer_data[$result['name']] = array( 'customer_group_id' => $result['customer_group_id'], 'language_id' => $result['language_id'], 'name' => $result['name'], 'description' => $result['description'] ); } $this->cache->set('customer', $customer_data); } return $customer_data; } } Темплейт Спойлер <?php if (count($customer_groups) > 1) { ?> <div class="pull-left"> <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form-customer"> <div class="btn-group"> <button class="btn btn-link dropdown-toggle" data-toggle="dropdown"> <?php foreach ($customer_groups as $customer) { ?> <?php if ($customer['id'] == $code) { ?> <strong><?php echo $customer['name']; ?></strong> <?php } ?> <?php } ?> <span class="hidden-xs hidden-sm hidden-md"><?php echo $text_customer; ?></span> <i class="fa fa-caret-down"></i></button> <ul class="dropdown-menu"> <?php foreach ($customer_groups as $customer) { ?> <li><button class="customer-select btn btn-link btn-block" type="button" name="<?php echo $customer['id']; ?>"><?php echo $customer['name']; ?></button></li> <?php } ?> </ul> </div> <input type="hidden" name="code" value="" /> <input type="hidden" name="redirect" value="<?php echo $redirect; ?>" /> </form> </div> <?php } ?> Змінено 17 липня 2018 користувачем max1985 Надіслати Поділитися на інших сайтах More sharing options... krumax Опубліковано: 17 липня 2018 Share Опубліковано: 17 липня 2018 (змінено) @max1985 видимо я зря Вам выше дал ссылку на топик, где пошагово видно что и где нужно делать. Группа покупателя хранится в БД в таблице _customer именно туда и нужно писать выбранное покупателем id группы. Ваш код этого не делает и соответственно группа у покупателя осталась прежней. Змінено 17 липня 2018 користувачем krumax Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 17 липня 2018 Автор Share Опубліковано: 17 липня 2018 52 минуты назад, krumax сказал: @max1985 видимо я зря Вам выше дал ссылку на топик, где пошагово видно что и где нужно делать. Группа покупателя хранится в БД в таблице _customer именно туда и нужно писать выбранное покупателем id группы. Ваш код этого не делает и соответственно группа у покупателя осталась прежней. Спасибо! Да я видел эту тему, но там все так запутано решыл сделать с нуля на основе выбора валюты. Я так понимаю в Моделе надо привязываться к таблице customer, и связывать ее с customer_group_description для вывода имени группы? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Локалізація Выбор Группы пользователей в шапке сайта Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Ulv Опубліковано: 16 липня 2018 Share Опубліковано: 16 липня 2018 Версия какая стора? Для каких целей? Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 16 липня 2018 Автор Share Опубліковано: 16 липня 2018 ocStore 2.3.0.2.3 Для того чтобы пользователь мог выбрать группу пользователей и видеть свои цены. Надіслати Поділитися на інших сайтах More sharing options... Ulv Опубліковано: 16 липня 2018 Share Опубліковано: 16 липня 2018 Сделать копии файлов model/currency.php, controller/currency.php, view/theme/*/common/currency.tpl, language/russian/currency.php, system/library/currency.php В индексном файле добавить $registry->set('customer_group', new CustonerGroup($registry)); Заменить в названии классов, Currency на UserGroup, переименовать файлы. В модели описать выборку из БД групп, в контроллере сделать вывод этой выборки в массив и сделать вывод этого в шаблоне tpl. В файле system/library/currency.php задавать куки уже для групп.. Поверхностно. Надіслати Поділитися на інших сайтах More sharing options... krumax Опубліковано: 16 липня 2018 Share Опубліковано: 16 липня 2018 Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 17 липня 2018 Автор Share Опубліковано: 17 липня 2018 (змінено) 16 часов назад, Ulv сказал: Сделать копии файлов model/currency.php, controller/currency.php, view/theme/*/common/currency.tpl, language/russian/currency.php, system/library/currency.php В индексном файле добавить $registry->set('customer_group', new CustonerGroup($registry)); Заменить в названии классов, Currency на UserGroup, переименовать файлы. В модели описать выборку из БД групп, в контроллере сделать вывод этой выборки в массив и сделать вывод этого в шаблоне tpl. В файле system/library/currency.php задавать куки уже для групп.. Поверхностно. Сделал как Вы посоветовали. Не нашел только файла system/library/currency.php В итоге в шапке появился выбор. Но есть несколько проблем. 1. Выдает одну ошибку Notice: Undefined index: customer. Ругается на эту строчку: $data['name'] = $this->session->data['customer']; 2. Не выводит рядом с формой текущую группу. Наверно не понимает такое условие: <?php if ($customer['name'] == $name) { ?> 3. Я так понимаю не выбирает и не меняет группу. Вот что у меня сейчас в файлах: Контроллер Спойлер <?php class ControllerCommonCustomer extends Controller { public function index() { $this->load->language('common/customer'); $data['text_customer'] = $this->language->get('text_customer'); $data['action'] = $this->url->link('common/customer/customer', '', isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))); $data['name'] = $this->session->data['customer']; $this->load->model('localisation/customer'); $data['currencies'] = array(); $results = $this->model_localisation_customer->getCurrencies(); foreach ($results as $result) { if ($result['name']) { $data['currencies'][] = array( 'name' => $result['name'] ); } } if (!isset($this->request->get['route'])) { $data['redirect'] = $this->url->link('common/home'); } else { $url_data = $this->request->get; unset($url_data['_route_']); $route = $url_data['route']; unset($url_data['route']); $url = ''; if ($url_data) { $url = '&' . urldecode(http_build_query($url_data, '', '&')); } $data['redirect'] = $this->url->link($route, $url, isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))); } return $this->load->view('common/customer', $data); } public function customer() { if (isset($this->request->post['name'])) { $this->session->data['customer'] = $this->request->post['name']; unset($this->session->data['shipping_method']); unset($this->session->data['shipping_methods']); } if (isset($this->request->post['redirect'])) { $this->response->redirect($this->request->post['redirect']); } else { $this->response->redirect($this->url->link('common/home')); } } } Модель Спойлер <?php class ModelLocalisationCustomer extends Model { public function getCustomerByName($customer) { $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "customer_group_description WHERE name = '" . $this->db->escape($customer) . "'"); return $query->row; } public function getCurrencies() { $customer_data = $this->cache->get('customer'); if (!$customer_data) { $customer_data = array(); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer_group_description ORDER BY name ASC"); foreach ($query->rows as $result) { $customer_data[$result['name']] = array( 'customer_group_id' => $result['customer_group_id'], 'language_id' => $result['language_id'], 'name' => $result['name'], 'description' => $result['description'] ); } $this->cache->set('customer', $customer_data); } return $customer_data; } } Темплейт Спойлер <?php if (count($currencies) > 1) { ?> <div class="pull-left"> <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form-customer"> <div class="btn-group"> <button class="btn btn-link dropdown-toggle" data-toggle="dropdown"> <?php foreach ($currencies as $customer) { ?> <?php if ($customer['name'] == $name) { ?> <strong><?php echo $customer['name']; ?></strong> <?php } ?> <?php } ?> <span class="hidden-xs hidden-sm hidden-md"><?php echo $text_customer; ?></span> <i class="fa fa-caret-down"></i></button> <ul class="dropdown-menu"> <?php foreach ($currencies as $customer) { ?> <li><button class="customer-select btn btn-link btn-block" type="button" name="<?php echo $customer['name']; ?>"><?php echo $customer['name']; ?></button></li> <?php } ?> </ul> </div> <input type="hidden" name="name" value="" /> <input type="hidden" name="redirect" value="<?php echo $redirect; ?>" /> </form> </div> <?php } ?> Подскажите куда копать! Спасибо! Змінено 17 липня 2018 користувачем max1985 Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 17 липня 2018 Автор Share Опубліковано: 17 липня 2018 (змінено) Часть проблем ушла при помощи Ulv. Теперь выбирается Группа и сохраняется при переходах по страницам, но цены на сайте не меняются, хотя при выборе группы идет обновление страницы. На данный момент так: Контроллер Спойлер <?php class ControllerCommonCustomer extends Controller { public function index() { $this->load->language('common/customer'); $data['text_customer'] = $this->language->get('text_customer'); $data['action'] = $this->url->link('common/customer/customer', '', isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))); $this->load->model('localisation/customer'); //var_dump($this->config->get('customer_group_default')); if(empty($this->session->data['customer_group_id'])){ $data['code'] = $this->session->data['customer_group_id'] = $this->config->get('config_customer_group_id'); }else{ $data['code'] = $this->session->data['customer_group_id']; } //var_dump($this->config->get('customer_group_default')); $data['customer_groups'] = array(); $results = $this->model_localisation_customer->getCurrencies(); foreach ($results as $result) { if ($result['name']) { $data['customer_groups'][] = array( 'id' => $result['customer_group_id'], 'name' => $result['name'] ); } } if (!isset($this->request->get['route'])) { $data['redirect'] = $this->url->link('common/home'); } else { $url_data = $this->request->get; unset($url_data['_route_']); $route = $url_data['route']; unset($url_data['route']); $url = ''; if ($url_data) { $url = '&' . urldecode(http_build_query($url_data, '', '&')); } $data['redirect'] = $this->url->link($route, $url, isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))); } return $this->load->view('common/customer', $data); } public function customer() { if (isset($this->request->post['code'])) { $this->session->data['customer_group_id'] = $this->request->post['code']; } if (isset($this->request->post['redirect'])) { $this->response->redirect($this->request->post['redirect']); } else { $this->response->redirect($this->url->link('common/home')); } } } Модель Спойлер <?php class ModelLocalisationCustomer extends Model { public function getCustomerByName($customer) { $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "customer_group_description WHERE name = '" . $this->db->escape($customer) . "'"); return $query->row; } public function getCurrencies() { $customer_data = $this->cache->get('customer'); if (!$customer_data) { $customer_data = array(); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer_group_description ORDER BY name ASC"); foreach ($query->rows as $result) { $customer_data[$result['name']] = array( 'customer_group_id' => $result['customer_group_id'], 'language_id' => $result['language_id'], 'name' => $result['name'], 'description' => $result['description'] ); } $this->cache->set('customer', $customer_data); } return $customer_data; } } Темплейт Спойлер <?php if (count($customer_groups) > 1) { ?> <div class="pull-left"> <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form-customer"> <div class="btn-group"> <button class="btn btn-link dropdown-toggle" data-toggle="dropdown"> <?php foreach ($customer_groups as $customer) { ?> <?php if ($customer['id'] == $code) { ?> <strong><?php echo $customer['name']; ?></strong> <?php } ?> <?php } ?> <span class="hidden-xs hidden-sm hidden-md"><?php echo $text_customer; ?></span> <i class="fa fa-caret-down"></i></button> <ul class="dropdown-menu"> <?php foreach ($customer_groups as $customer) { ?> <li><button class="customer-select btn btn-link btn-block" type="button" name="<?php echo $customer['id']; ?>"><?php echo $customer['name']; ?></button></li> <?php } ?> </ul> </div> <input type="hidden" name="code" value="" /> <input type="hidden" name="redirect" value="<?php echo $redirect; ?>" /> </form> </div> <?php } ?> Змінено 17 липня 2018 користувачем max1985 Надіслати Поділитися на інших сайтах More sharing options... krumax Опубліковано: 17 липня 2018 Share Опубліковано: 17 липня 2018 (змінено) @max1985 видимо я зря Вам выше дал ссылку на топик, где пошагово видно что и где нужно делать. Группа покупателя хранится в БД в таблице _customer именно туда и нужно писать выбранное покупателем id группы. Ваш код этого не делает и соответственно группа у покупателя осталась прежней. Змінено 17 липня 2018 користувачем krumax Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 17 липня 2018 Автор Share Опубліковано: 17 липня 2018 52 минуты назад, krumax сказал: @max1985 видимо я зря Вам выше дал ссылку на топик, где пошагово видно что и где нужно делать. Группа покупателя хранится в БД в таблице _customer именно туда и нужно писать выбранное покупателем id группы. Ваш код этого не делает и соответственно группа у покупателя осталась прежней. Спасибо! Да я видел эту тему, но там все так запутано решыл сделать с нуля на основе выбора валюты. Я так понимаю в Моделе надо привязываться к таблице customer, и связывать ее с customer_group_description для вывода имени группы? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Локалізація Выбор Группы пользователей в шапке сайта Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
max1985 Опубліковано: 16 липня 2018 Автор Share Опубліковано: 16 липня 2018 ocStore 2.3.0.2.3 Для того чтобы пользователь мог выбрать группу пользователей и видеть свои цены. Надіслати Поділитися на інших сайтах More sharing options... Ulv Опубліковано: 16 липня 2018 Share Опубліковано: 16 липня 2018 Сделать копии файлов model/currency.php, controller/currency.php, view/theme/*/common/currency.tpl, language/russian/currency.php, system/library/currency.php В индексном файле добавить $registry->set('customer_group', new CustonerGroup($registry)); Заменить в названии классов, Currency на UserGroup, переименовать файлы. В модели описать выборку из БД групп, в контроллере сделать вывод этой выборки в массив и сделать вывод этого в шаблоне tpl. В файле system/library/currency.php задавать куки уже для групп.. Поверхностно. Надіслати Поділитися на інших сайтах More sharing options... krumax Опубліковано: 16 липня 2018 Share Опубліковано: 16 липня 2018 Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 17 липня 2018 Автор Share Опубліковано: 17 липня 2018 (змінено) 16 часов назад, Ulv сказал: Сделать копии файлов model/currency.php, controller/currency.php, view/theme/*/common/currency.tpl, language/russian/currency.php, system/library/currency.php В индексном файле добавить $registry->set('customer_group', new CustonerGroup($registry)); Заменить в названии классов, Currency на UserGroup, переименовать файлы. В модели описать выборку из БД групп, в контроллере сделать вывод этой выборки в массив и сделать вывод этого в шаблоне tpl. В файле system/library/currency.php задавать куки уже для групп.. Поверхностно. Сделал как Вы посоветовали. Не нашел только файла system/library/currency.php В итоге в шапке появился выбор. Но есть несколько проблем. 1. Выдает одну ошибку Notice: Undefined index: customer. Ругается на эту строчку: $data['name'] = $this->session->data['customer']; 2. Не выводит рядом с формой текущую группу. Наверно не понимает такое условие: <?php if ($customer['name'] == $name) { ?> 3. Я так понимаю не выбирает и не меняет группу. Вот что у меня сейчас в файлах: Контроллер Спойлер <?php class ControllerCommonCustomer extends Controller { public function index() { $this->load->language('common/customer'); $data['text_customer'] = $this->language->get('text_customer'); $data['action'] = $this->url->link('common/customer/customer', '', isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))); $data['name'] = $this->session->data['customer']; $this->load->model('localisation/customer'); $data['currencies'] = array(); $results = $this->model_localisation_customer->getCurrencies(); foreach ($results as $result) { if ($result['name']) { $data['currencies'][] = array( 'name' => $result['name'] ); } } if (!isset($this->request->get['route'])) { $data['redirect'] = $this->url->link('common/home'); } else { $url_data = $this->request->get; unset($url_data['_route_']); $route = $url_data['route']; unset($url_data['route']); $url = ''; if ($url_data) { $url = '&' . urldecode(http_build_query($url_data, '', '&')); } $data['redirect'] = $this->url->link($route, $url, isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))); } return $this->load->view('common/customer', $data); } public function customer() { if (isset($this->request->post['name'])) { $this->session->data['customer'] = $this->request->post['name']; unset($this->session->data['shipping_method']); unset($this->session->data['shipping_methods']); } if (isset($this->request->post['redirect'])) { $this->response->redirect($this->request->post['redirect']); } else { $this->response->redirect($this->url->link('common/home')); } } } Модель Спойлер <?php class ModelLocalisationCustomer extends Model { public function getCustomerByName($customer) { $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "customer_group_description WHERE name = '" . $this->db->escape($customer) . "'"); return $query->row; } public function getCurrencies() { $customer_data = $this->cache->get('customer'); if (!$customer_data) { $customer_data = array(); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer_group_description ORDER BY name ASC"); foreach ($query->rows as $result) { $customer_data[$result['name']] = array( 'customer_group_id' => $result['customer_group_id'], 'language_id' => $result['language_id'], 'name' => $result['name'], 'description' => $result['description'] ); } $this->cache->set('customer', $customer_data); } return $customer_data; } } Темплейт Спойлер <?php if (count($currencies) > 1) { ?> <div class="pull-left"> <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form-customer"> <div class="btn-group"> <button class="btn btn-link dropdown-toggle" data-toggle="dropdown"> <?php foreach ($currencies as $customer) { ?> <?php if ($customer['name'] == $name) { ?> <strong><?php echo $customer['name']; ?></strong> <?php } ?> <?php } ?> <span class="hidden-xs hidden-sm hidden-md"><?php echo $text_customer; ?></span> <i class="fa fa-caret-down"></i></button> <ul class="dropdown-menu"> <?php foreach ($currencies as $customer) { ?> <li><button class="customer-select btn btn-link btn-block" type="button" name="<?php echo $customer['name']; ?>"><?php echo $customer['name']; ?></button></li> <?php } ?> </ul> </div> <input type="hidden" name="name" value="" /> <input type="hidden" name="redirect" value="<?php echo $redirect; ?>" /> </form> </div> <?php } ?> Подскажите куда копать! Спасибо! Змінено 17 липня 2018 користувачем max1985 Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 17 липня 2018 Автор Share Опубліковано: 17 липня 2018 (змінено) Часть проблем ушла при помощи Ulv. Теперь выбирается Группа и сохраняется при переходах по страницам, но цены на сайте не меняются, хотя при выборе группы идет обновление страницы. На данный момент так: Контроллер Спойлер <?php class ControllerCommonCustomer extends Controller { public function index() { $this->load->language('common/customer'); $data['text_customer'] = $this->language->get('text_customer'); $data['action'] = $this->url->link('common/customer/customer', '', isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))); $this->load->model('localisation/customer'); //var_dump($this->config->get('customer_group_default')); if(empty($this->session->data['customer_group_id'])){ $data['code'] = $this->session->data['customer_group_id'] = $this->config->get('config_customer_group_id'); }else{ $data['code'] = $this->session->data['customer_group_id']; } //var_dump($this->config->get('customer_group_default')); $data['customer_groups'] = array(); $results = $this->model_localisation_customer->getCurrencies(); foreach ($results as $result) { if ($result['name']) { $data['customer_groups'][] = array( 'id' => $result['customer_group_id'], 'name' => $result['name'] ); } } if (!isset($this->request->get['route'])) { $data['redirect'] = $this->url->link('common/home'); } else { $url_data = $this->request->get; unset($url_data['_route_']); $route = $url_data['route']; unset($url_data['route']); $url = ''; if ($url_data) { $url = '&' . urldecode(http_build_query($url_data, '', '&')); } $data['redirect'] = $this->url->link($route, $url, isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))); } return $this->load->view('common/customer', $data); } public function customer() { if (isset($this->request->post['code'])) { $this->session->data['customer_group_id'] = $this->request->post['code']; } if (isset($this->request->post['redirect'])) { $this->response->redirect($this->request->post['redirect']); } else { $this->response->redirect($this->url->link('common/home')); } } } Модель Спойлер <?php class ModelLocalisationCustomer extends Model { public function getCustomerByName($customer) { $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "customer_group_description WHERE name = '" . $this->db->escape($customer) . "'"); return $query->row; } public function getCurrencies() { $customer_data = $this->cache->get('customer'); if (!$customer_data) { $customer_data = array(); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer_group_description ORDER BY name ASC"); foreach ($query->rows as $result) { $customer_data[$result['name']] = array( 'customer_group_id' => $result['customer_group_id'], 'language_id' => $result['language_id'], 'name' => $result['name'], 'description' => $result['description'] ); } $this->cache->set('customer', $customer_data); } return $customer_data; } } Темплейт Спойлер <?php if (count($customer_groups) > 1) { ?> <div class="pull-left"> <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form-customer"> <div class="btn-group"> <button class="btn btn-link dropdown-toggle" data-toggle="dropdown"> <?php foreach ($customer_groups as $customer) { ?> <?php if ($customer['id'] == $code) { ?> <strong><?php echo $customer['name']; ?></strong> <?php } ?> <?php } ?> <span class="hidden-xs hidden-sm hidden-md"><?php echo $text_customer; ?></span> <i class="fa fa-caret-down"></i></button> <ul class="dropdown-menu"> <?php foreach ($customer_groups as $customer) { ?> <li><button class="customer-select btn btn-link btn-block" type="button" name="<?php echo $customer['id']; ?>"><?php echo $customer['name']; ?></button></li> <?php } ?> </ul> </div> <input type="hidden" name="code" value="" /> <input type="hidden" name="redirect" value="<?php echo $redirect; ?>" /> </form> </div> <?php } ?> Змінено 17 липня 2018 користувачем max1985 Надіслати Поділитися на інших сайтах More sharing options... krumax Опубліковано: 17 липня 2018 Share Опубліковано: 17 липня 2018 (змінено) @max1985 видимо я зря Вам выше дал ссылку на топик, где пошагово видно что и где нужно делать. Группа покупателя хранится в БД в таблице _customer именно туда и нужно писать выбранное покупателем id группы. Ваш код этого не делает и соответственно группа у покупателя осталась прежней. Змінено 17 липня 2018 користувачем krumax Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 17 липня 2018 Автор Share Опубліковано: 17 липня 2018 52 минуты назад, krumax сказал: @max1985 видимо я зря Вам выше дал ссылку на топик, где пошагово видно что и где нужно делать. Группа покупателя хранится в БД в таблице _customer именно туда и нужно писать выбранное покупателем id группы. Ваш код этого не делает и соответственно группа у покупателя осталась прежней. Спасибо! Да я видел эту тему, но там все так запутано решыл сделать с нуля на основе выбора валюты. Я так понимаю в Моделе надо привязываться к таблице customer, и связывать ее с customer_group_description для вывода имени группы? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Локалізація Выбор Группы пользователей в шапке сайта Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Ulv Опубліковано: 16 липня 2018 Share Опубліковано: 16 липня 2018 Сделать копии файлов model/currency.php, controller/currency.php, view/theme/*/common/currency.tpl, language/russian/currency.php, system/library/currency.php В индексном файле добавить $registry->set('customer_group', new CustonerGroup($registry)); Заменить в названии классов, Currency на UserGroup, переименовать файлы. В модели описать выборку из БД групп, в контроллере сделать вывод этой выборки в массив и сделать вывод этого в шаблоне tpl. В файле system/library/currency.php задавать куки уже для групп.. Поверхностно. Надіслати Поділитися на інших сайтах More sharing options... krumax Опубліковано: 16 липня 2018 Share Опубліковано: 16 липня 2018 Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 17 липня 2018 Автор Share Опубліковано: 17 липня 2018 (змінено) 16 часов назад, Ulv сказал: Сделать копии файлов model/currency.php, controller/currency.php, view/theme/*/common/currency.tpl, language/russian/currency.php, system/library/currency.php В индексном файле добавить $registry->set('customer_group', new CustonerGroup($registry)); Заменить в названии классов, Currency на UserGroup, переименовать файлы. В модели описать выборку из БД групп, в контроллере сделать вывод этой выборки в массив и сделать вывод этого в шаблоне tpl. В файле system/library/currency.php задавать куки уже для групп.. Поверхностно. Сделал как Вы посоветовали. Не нашел только файла system/library/currency.php В итоге в шапке появился выбор. Но есть несколько проблем. 1. Выдает одну ошибку Notice: Undefined index: customer. Ругается на эту строчку: $data['name'] = $this->session->data['customer']; 2. Не выводит рядом с формой текущую группу. Наверно не понимает такое условие: <?php if ($customer['name'] == $name) { ?> 3. Я так понимаю не выбирает и не меняет группу. Вот что у меня сейчас в файлах: Контроллер Спойлер <?php class ControllerCommonCustomer extends Controller { public function index() { $this->load->language('common/customer'); $data['text_customer'] = $this->language->get('text_customer'); $data['action'] = $this->url->link('common/customer/customer', '', isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))); $data['name'] = $this->session->data['customer']; $this->load->model('localisation/customer'); $data['currencies'] = array(); $results = $this->model_localisation_customer->getCurrencies(); foreach ($results as $result) { if ($result['name']) { $data['currencies'][] = array( 'name' => $result['name'] ); } } if (!isset($this->request->get['route'])) { $data['redirect'] = $this->url->link('common/home'); } else { $url_data = $this->request->get; unset($url_data['_route_']); $route = $url_data['route']; unset($url_data['route']); $url = ''; if ($url_data) { $url = '&' . urldecode(http_build_query($url_data, '', '&')); } $data['redirect'] = $this->url->link($route, $url, isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))); } return $this->load->view('common/customer', $data); } public function customer() { if (isset($this->request->post['name'])) { $this->session->data['customer'] = $this->request->post['name']; unset($this->session->data['shipping_method']); unset($this->session->data['shipping_methods']); } if (isset($this->request->post['redirect'])) { $this->response->redirect($this->request->post['redirect']); } else { $this->response->redirect($this->url->link('common/home')); } } } Модель Спойлер <?php class ModelLocalisationCustomer extends Model { public function getCustomerByName($customer) { $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "customer_group_description WHERE name = '" . $this->db->escape($customer) . "'"); return $query->row; } public function getCurrencies() { $customer_data = $this->cache->get('customer'); if (!$customer_data) { $customer_data = array(); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer_group_description ORDER BY name ASC"); foreach ($query->rows as $result) { $customer_data[$result['name']] = array( 'customer_group_id' => $result['customer_group_id'], 'language_id' => $result['language_id'], 'name' => $result['name'], 'description' => $result['description'] ); } $this->cache->set('customer', $customer_data); } return $customer_data; } } Темплейт Спойлер <?php if (count($currencies) > 1) { ?> <div class="pull-left"> <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form-customer"> <div class="btn-group"> <button class="btn btn-link dropdown-toggle" data-toggle="dropdown"> <?php foreach ($currencies as $customer) { ?> <?php if ($customer['name'] == $name) { ?> <strong><?php echo $customer['name']; ?></strong> <?php } ?> <?php } ?> <span class="hidden-xs hidden-sm hidden-md"><?php echo $text_customer; ?></span> <i class="fa fa-caret-down"></i></button> <ul class="dropdown-menu"> <?php foreach ($currencies as $customer) { ?> <li><button class="customer-select btn btn-link btn-block" type="button" name="<?php echo $customer['name']; ?>"><?php echo $customer['name']; ?></button></li> <?php } ?> </ul> </div> <input type="hidden" name="name" value="" /> <input type="hidden" name="redirect" value="<?php echo $redirect; ?>" /> </form> </div> <?php } ?> Подскажите куда копать! Спасибо! Змінено 17 липня 2018 користувачем max1985 Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 17 липня 2018 Автор Share Опубліковано: 17 липня 2018 (змінено) Часть проблем ушла при помощи Ulv. Теперь выбирается Группа и сохраняется при переходах по страницам, но цены на сайте не меняются, хотя при выборе группы идет обновление страницы. На данный момент так: Контроллер Спойлер <?php class ControllerCommonCustomer extends Controller { public function index() { $this->load->language('common/customer'); $data['text_customer'] = $this->language->get('text_customer'); $data['action'] = $this->url->link('common/customer/customer', '', isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))); $this->load->model('localisation/customer'); //var_dump($this->config->get('customer_group_default')); if(empty($this->session->data['customer_group_id'])){ $data['code'] = $this->session->data['customer_group_id'] = $this->config->get('config_customer_group_id'); }else{ $data['code'] = $this->session->data['customer_group_id']; } //var_dump($this->config->get('customer_group_default')); $data['customer_groups'] = array(); $results = $this->model_localisation_customer->getCurrencies(); foreach ($results as $result) { if ($result['name']) { $data['customer_groups'][] = array( 'id' => $result['customer_group_id'], 'name' => $result['name'] ); } } if (!isset($this->request->get['route'])) { $data['redirect'] = $this->url->link('common/home'); } else { $url_data = $this->request->get; unset($url_data['_route_']); $route = $url_data['route']; unset($url_data['route']); $url = ''; if ($url_data) { $url = '&' . urldecode(http_build_query($url_data, '', '&')); } $data['redirect'] = $this->url->link($route, $url, isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))); } return $this->load->view('common/customer', $data); } public function customer() { if (isset($this->request->post['code'])) { $this->session->data['customer_group_id'] = $this->request->post['code']; } if (isset($this->request->post['redirect'])) { $this->response->redirect($this->request->post['redirect']); } else { $this->response->redirect($this->url->link('common/home')); } } } Модель Спойлер <?php class ModelLocalisationCustomer extends Model { public function getCustomerByName($customer) { $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "customer_group_description WHERE name = '" . $this->db->escape($customer) . "'"); return $query->row; } public function getCurrencies() { $customer_data = $this->cache->get('customer'); if (!$customer_data) { $customer_data = array(); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer_group_description ORDER BY name ASC"); foreach ($query->rows as $result) { $customer_data[$result['name']] = array( 'customer_group_id' => $result['customer_group_id'], 'language_id' => $result['language_id'], 'name' => $result['name'], 'description' => $result['description'] ); } $this->cache->set('customer', $customer_data); } return $customer_data; } } Темплейт Спойлер <?php if (count($customer_groups) > 1) { ?> <div class="pull-left"> <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form-customer"> <div class="btn-group"> <button class="btn btn-link dropdown-toggle" data-toggle="dropdown"> <?php foreach ($customer_groups as $customer) { ?> <?php if ($customer['id'] == $code) { ?> <strong><?php echo $customer['name']; ?></strong> <?php } ?> <?php } ?> <span class="hidden-xs hidden-sm hidden-md"><?php echo $text_customer; ?></span> <i class="fa fa-caret-down"></i></button> <ul class="dropdown-menu"> <?php foreach ($customer_groups as $customer) { ?> <li><button class="customer-select btn btn-link btn-block" type="button" name="<?php echo $customer['id']; ?>"><?php echo $customer['name']; ?></button></li> <?php } ?> </ul> </div> <input type="hidden" name="code" value="" /> <input type="hidden" name="redirect" value="<?php echo $redirect; ?>" /> </form> </div> <?php } ?> Змінено 17 липня 2018 користувачем max1985 Надіслати Поділитися на інших сайтах More sharing options... krumax Опубліковано: 17 липня 2018 Share Опубліковано: 17 липня 2018 (змінено) @max1985 видимо я зря Вам выше дал ссылку на топик, где пошагово видно что и где нужно делать. Группа покупателя хранится в БД в таблице _customer именно туда и нужно писать выбранное покупателем id группы. Ваш код этого не делает и соответственно группа у покупателя осталась прежней. Змінено 17 липня 2018 користувачем krumax Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 17 липня 2018 Автор Share Опубліковано: 17 липня 2018 52 минуты назад, krumax сказал: @max1985 видимо я зря Вам выше дал ссылку на топик, где пошагово видно что и где нужно делать. Группа покупателя хранится в БД в таблице _customer именно туда и нужно писать выбранное покупателем id группы. Ваш код этого не делает и соответственно группа у покупателя осталась прежней. Спасибо! Да я видел эту тему, но там все так запутано решыл сделать с нуля на основе выбора валюты. Я так понимаю в Моделе надо привязываться к таблице customer, и связывать ее с customer_group_description для вывода имени группы? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Локалізація Выбор Группы пользователей в шапке сайта Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
krumax Опубліковано: 16 липня 2018 Share Опубліковано: 16 липня 2018 Надіслати Поділитися на інших сайтах More sharing options...
max1985 Опубліковано: 17 липня 2018 Автор Share Опубліковано: 17 липня 2018 (змінено) 16 часов назад, Ulv сказал: Сделать копии файлов model/currency.php, controller/currency.php, view/theme/*/common/currency.tpl, language/russian/currency.php, system/library/currency.php В индексном файле добавить $registry->set('customer_group', new CustonerGroup($registry)); Заменить в названии классов, Currency на UserGroup, переименовать файлы. В модели описать выборку из БД групп, в контроллере сделать вывод этой выборки в массив и сделать вывод этого в шаблоне tpl. В файле system/library/currency.php задавать куки уже для групп.. Поверхностно. Сделал как Вы посоветовали. Не нашел только файла system/library/currency.php В итоге в шапке появился выбор. Но есть несколько проблем. 1. Выдает одну ошибку Notice: Undefined index: customer. Ругается на эту строчку: $data['name'] = $this->session->data['customer']; 2. Не выводит рядом с формой текущую группу. Наверно не понимает такое условие: <?php if ($customer['name'] == $name) { ?> 3. Я так понимаю не выбирает и не меняет группу. Вот что у меня сейчас в файлах: Контроллер Спойлер <?php class ControllerCommonCustomer extends Controller { public function index() { $this->load->language('common/customer'); $data['text_customer'] = $this->language->get('text_customer'); $data['action'] = $this->url->link('common/customer/customer', '', isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))); $data['name'] = $this->session->data['customer']; $this->load->model('localisation/customer'); $data['currencies'] = array(); $results = $this->model_localisation_customer->getCurrencies(); foreach ($results as $result) { if ($result['name']) { $data['currencies'][] = array( 'name' => $result['name'] ); } } if (!isset($this->request->get['route'])) { $data['redirect'] = $this->url->link('common/home'); } else { $url_data = $this->request->get; unset($url_data['_route_']); $route = $url_data['route']; unset($url_data['route']); $url = ''; if ($url_data) { $url = '&' . urldecode(http_build_query($url_data, '', '&')); } $data['redirect'] = $this->url->link($route, $url, isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))); } return $this->load->view('common/customer', $data); } public function customer() { if (isset($this->request->post['name'])) { $this->session->data['customer'] = $this->request->post['name']; unset($this->session->data['shipping_method']); unset($this->session->data['shipping_methods']); } if (isset($this->request->post['redirect'])) { $this->response->redirect($this->request->post['redirect']); } else { $this->response->redirect($this->url->link('common/home')); } } } Модель Спойлер <?php class ModelLocalisationCustomer extends Model { public function getCustomerByName($customer) { $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "customer_group_description WHERE name = '" . $this->db->escape($customer) . "'"); return $query->row; } public function getCurrencies() { $customer_data = $this->cache->get('customer'); if (!$customer_data) { $customer_data = array(); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer_group_description ORDER BY name ASC"); foreach ($query->rows as $result) { $customer_data[$result['name']] = array( 'customer_group_id' => $result['customer_group_id'], 'language_id' => $result['language_id'], 'name' => $result['name'], 'description' => $result['description'] ); } $this->cache->set('customer', $customer_data); } return $customer_data; } } Темплейт Спойлер <?php if (count($currencies) > 1) { ?> <div class="pull-left"> <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form-customer"> <div class="btn-group"> <button class="btn btn-link dropdown-toggle" data-toggle="dropdown"> <?php foreach ($currencies as $customer) { ?> <?php if ($customer['name'] == $name) { ?> <strong><?php echo $customer['name']; ?></strong> <?php } ?> <?php } ?> <span class="hidden-xs hidden-sm hidden-md"><?php echo $text_customer; ?></span> <i class="fa fa-caret-down"></i></button> <ul class="dropdown-menu"> <?php foreach ($currencies as $customer) { ?> <li><button class="customer-select btn btn-link btn-block" type="button" name="<?php echo $customer['name']; ?>"><?php echo $customer['name']; ?></button></li> <?php } ?> </ul> </div> <input type="hidden" name="name" value="" /> <input type="hidden" name="redirect" value="<?php echo $redirect; ?>" /> </form> </div> <?php } ?> Подскажите куда копать! Спасибо! Змінено 17 липня 2018 користувачем max1985 Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 17 липня 2018 Автор Share Опубліковано: 17 липня 2018 (змінено) Часть проблем ушла при помощи Ulv. Теперь выбирается Группа и сохраняется при переходах по страницам, но цены на сайте не меняются, хотя при выборе группы идет обновление страницы. На данный момент так: Контроллер Спойлер <?php class ControllerCommonCustomer extends Controller { public function index() { $this->load->language('common/customer'); $data['text_customer'] = $this->language->get('text_customer'); $data['action'] = $this->url->link('common/customer/customer', '', isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))); $this->load->model('localisation/customer'); //var_dump($this->config->get('customer_group_default')); if(empty($this->session->data['customer_group_id'])){ $data['code'] = $this->session->data['customer_group_id'] = $this->config->get('config_customer_group_id'); }else{ $data['code'] = $this->session->data['customer_group_id']; } //var_dump($this->config->get('customer_group_default')); $data['customer_groups'] = array(); $results = $this->model_localisation_customer->getCurrencies(); foreach ($results as $result) { if ($result['name']) { $data['customer_groups'][] = array( 'id' => $result['customer_group_id'], 'name' => $result['name'] ); } } if (!isset($this->request->get['route'])) { $data['redirect'] = $this->url->link('common/home'); } else { $url_data = $this->request->get; unset($url_data['_route_']); $route = $url_data['route']; unset($url_data['route']); $url = ''; if ($url_data) { $url = '&' . urldecode(http_build_query($url_data, '', '&')); } $data['redirect'] = $this->url->link($route, $url, isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))); } return $this->load->view('common/customer', $data); } public function customer() { if (isset($this->request->post['code'])) { $this->session->data['customer_group_id'] = $this->request->post['code']; } if (isset($this->request->post['redirect'])) { $this->response->redirect($this->request->post['redirect']); } else { $this->response->redirect($this->url->link('common/home')); } } } Модель Спойлер <?php class ModelLocalisationCustomer extends Model { public function getCustomerByName($customer) { $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "customer_group_description WHERE name = '" . $this->db->escape($customer) . "'"); return $query->row; } public function getCurrencies() { $customer_data = $this->cache->get('customer'); if (!$customer_data) { $customer_data = array(); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer_group_description ORDER BY name ASC"); foreach ($query->rows as $result) { $customer_data[$result['name']] = array( 'customer_group_id' => $result['customer_group_id'], 'language_id' => $result['language_id'], 'name' => $result['name'], 'description' => $result['description'] ); } $this->cache->set('customer', $customer_data); } return $customer_data; } } Темплейт Спойлер <?php if (count($customer_groups) > 1) { ?> <div class="pull-left"> <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form-customer"> <div class="btn-group"> <button class="btn btn-link dropdown-toggle" data-toggle="dropdown"> <?php foreach ($customer_groups as $customer) { ?> <?php if ($customer['id'] == $code) { ?> <strong><?php echo $customer['name']; ?></strong> <?php } ?> <?php } ?> <span class="hidden-xs hidden-sm hidden-md"><?php echo $text_customer; ?></span> <i class="fa fa-caret-down"></i></button> <ul class="dropdown-menu"> <?php foreach ($customer_groups as $customer) { ?> <li><button class="customer-select btn btn-link btn-block" type="button" name="<?php echo $customer['id']; ?>"><?php echo $customer['name']; ?></button></li> <?php } ?> </ul> </div> <input type="hidden" name="code" value="" /> <input type="hidden" name="redirect" value="<?php echo $redirect; ?>" /> </form> </div> <?php } ?> Змінено 17 липня 2018 користувачем max1985 Надіслати Поділитися на інших сайтах More sharing options... krumax Опубліковано: 17 липня 2018 Share Опубліковано: 17 липня 2018 (змінено) @max1985 видимо я зря Вам выше дал ссылку на топик, где пошагово видно что и где нужно делать. Группа покупателя хранится в БД в таблице _customer именно туда и нужно писать выбранное покупателем id группы. Ваш код этого не делает и соответственно группа у покупателя осталась прежней. Змінено 17 липня 2018 користувачем krumax Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 17 липня 2018 Автор Share Опубліковано: 17 липня 2018 52 минуты назад, krumax сказал: @max1985 видимо я зря Вам выше дал ссылку на топик, где пошагово видно что и где нужно делать. Группа покупателя хранится в БД в таблице _customer именно туда и нужно писать выбранное покупателем id группы. Ваш код этого не делает и соответственно группа у покупателя осталась прежней. Спасибо! Да я видел эту тему, но там все так запутано решыл сделать с нуля на основе выбора валюты. Я так понимаю в Моделе надо привязываться к таблице customer, и связывать ее с customer_group_description для вывода имени группы? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Локалізація Выбор Группы пользователей в шапке сайта
max1985 Опубліковано: 17 липня 2018 Автор Share Опубліковано: 17 липня 2018 (змінено) Часть проблем ушла при помощи Ulv. Теперь выбирается Группа и сохраняется при переходах по страницам, но цены на сайте не меняются, хотя при выборе группы идет обновление страницы. На данный момент так: Контроллер Спойлер <?php class ControllerCommonCustomer extends Controller { public function index() { $this->load->language('common/customer'); $data['text_customer'] = $this->language->get('text_customer'); $data['action'] = $this->url->link('common/customer/customer', '', isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))); $this->load->model('localisation/customer'); //var_dump($this->config->get('customer_group_default')); if(empty($this->session->data['customer_group_id'])){ $data['code'] = $this->session->data['customer_group_id'] = $this->config->get('config_customer_group_id'); }else{ $data['code'] = $this->session->data['customer_group_id']; } //var_dump($this->config->get('customer_group_default')); $data['customer_groups'] = array(); $results = $this->model_localisation_customer->getCurrencies(); foreach ($results as $result) { if ($result['name']) { $data['customer_groups'][] = array( 'id' => $result['customer_group_id'], 'name' => $result['name'] ); } } if (!isset($this->request->get['route'])) { $data['redirect'] = $this->url->link('common/home'); } else { $url_data = $this->request->get; unset($url_data['_route_']); $route = $url_data['route']; unset($url_data['route']); $url = ''; if ($url_data) { $url = '&' . urldecode(http_build_query($url_data, '', '&')); } $data['redirect'] = $this->url->link($route, $url, isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))); } return $this->load->view('common/customer', $data); } public function customer() { if (isset($this->request->post['code'])) { $this->session->data['customer_group_id'] = $this->request->post['code']; } if (isset($this->request->post['redirect'])) { $this->response->redirect($this->request->post['redirect']); } else { $this->response->redirect($this->url->link('common/home')); } } } Модель Спойлер <?php class ModelLocalisationCustomer extends Model { public function getCustomerByName($customer) { $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "customer_group_description WHERE name = '" . $this->db->escape($customer) . "'"); return $query->row; } public function getCurrencies() { $customer_data = $this->cache->get('customer'); if (!$customer_data) { $customer_data = array(); $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "customer_group_description ORDER BY name ASC"); foreach ($query->rows as $result) { $customer_data[$result['name']] = array( 'customer_group_id' => $result['customer_group_id'], 'language_id' => $result['language_id'], 'name' => $result['name'], 'description' => $result['description'] ); } $this->cache->set('customer', $customer_data); } return $customer_data; } } Темплейт Спойлер <?php if (count($customer_groups) > 1) { ?> <div class="pull-left"> <form action="<?php echo $action; ?>" method="post" enctype="multipart/form-data" id="form-customer"> <div class="btn-group"> <button class="btn btn-link dropdown-toggle" data-toggle="dropdown"> <?php foreach ($customer_groups as $customer) { ?> <?php if ($customer['id'] == $code) { ?> <strong><?php echo $customer['name']; ?></strong> <?php } ?> <?php } ?> <span class="hidden-xs hidden-sm hidden-md"><?php echo $text_customer; ?></span> <i class="fa fa-caret-down"></i></button> <ul class="dropdown-menu"> <?php foreach ($customer_groups as $customer) { ?> <li><button class="customer-select btn btn-link btn-block" type="button" name="<?php echo $customer['id']; ?>"><?php echo $customer['name']; ?></button></li> <?php } ?> </ul> </div> <input type="hidden" name="code" value="" /> <input type="hidden" name="redirect" value="<?php echo $redirect; ?>" /> </form> </div> <?php } ?> Змінено 17 липня 2018 користувачем max1985 Надіслати Поділитися на інших сайтах More sharing options... krumax Опубліковано: 17 липня 2018 Share Опубліковано: 17 липня 2018 (змінено) @max1985 видимо я зря Вам выше дал ссылку на топик, где пошагово видно что и где нужно делать. Группа покупателя хранится в БД в таблице _customer именно туда и нужно писать выбранное покупателем id группы. Ваш код этого не делает и соответственно группа у покупателя осталась прежней. Змінено 17 липня 2018 користувачем krumax Надіслати Поділитися на інших сайтах More sharing options... max1985 Опубліковано: 17 липня 2018 Автор Share Опубліковано: 17 липня 2018 52 минуты назад, krumax сказал: @max1985 видимо я зря Вам выше дал ссылку на топик, где пошагово видно что и где нужно делать. Группа покупателя хранится в БД в таблице _customer именно туда и нужно писать выбранное покупателем id группы. Ваш код этого не делает и соответственно группа у покупателя осталась прежней. Спасибо! Да я видел эту тему, но там все так запутано решыл сделать с нуля на основе выбора валюты. Я так понимаю в Моделе надо привязываться к таблице customer, и связывать ее с customer_group_description для вывода имени группы? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
krumax Опубліковано: 17 липня 2018 Share Опубліковано: 17 липня 2018 (змінено) @max1985 видимо я зря Вам выше дал ссылку на топик, где пошагово видно что и где нужно делать. Группа покупателя хранится в БД в таблице _customer именно туда и нужно писать выбранное покупателем id группы. Ваш код этого не делает и соответственно группа у покупателя осталась прежней. Змінено 17 липня 2018 користувачем krumax Надіслати Поділитися на інших сайтах More sharing options...
max1985 Опубліковано: 17 липня 2018 Автор Share Опубліковано: 17 липня 2018 52 минуты назад, krumax сказал: @max1985 видимо я зря Вам выше дал ссылку на топик, где пошагово видно что и где нужно делать. Группа покупателя хранится в БД в таблице _customer именно туда и нужно писать выбранное покупателем id группы. Ваш код этого не делает и соответственно группа у покупателя осталась прежней. Спасибо! Да я видел эту тему, но там все так запутано решыл сделать с нуля на основе выбора валюты. Я так понимаю в Моделе надо привязываться к таблице customer, и связывать ее с customer_group_description для вывода имени группы? Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 0
Recommended Posts