Padlik Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Всем привет. Прошу помочь. Делаю показ товара в модальном окне на странице категории (быстрый просмотр). Создал контроллер prodmodal (скопировал контроллер товара, за некоторыми изменениями), добавил шаблон (скопировал tpl товара, убрав шапку, футер, колонки). Дописал вызов открытия окна в popup в common.js. Проблема в том, что нужно получить в модальном окне полный путь в breadcumbs как и на обычной странице товара. Seo pro включен и на обычных страницах работает. Однако при открытии товара в модальном окне крошки имеют вид Главная > Товар. Пробовал плясать вокруг получения path. Не могу понять, почему путь до товара не работает, когда по сути я копирую контроллер товара и получаю рендеринг html страницы товара в модальном окне, но на странице категории. Прошу помочь, навести на путь истинный. Надіслати Поділитися на інших сайтах More sharing options...
Padlik Опубліковано: 24 квітня 2020 Автор Share Опубліковано: 24 квітня 2020 Вдогонку. Пробовал обернуть дефолтную страницу товара в modal-body как есть. Один фиг крошки вида Главная>Товар. Надіслати Поділитися на інших сайтах More sharing options...
Otvet Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 делайте в контроллере просчет - самый простой путь Надіслати Поділитися на інших сайтах More sharing options... anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 не очень понятна суть хлебных крошек в попапе.....смысл в чем? Надіслати Поділитися на інших сайтах More sharing options... Padlik Опубліковано: 24 квітня 2020 Автор Share Опубліковано: 24 квітня 2020 $this->load->model('catalog/category'); if (isset($this->request->get['path'])) { $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = $path_id; } else { $path .= '_' . $path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } Я не пойму почему отрабатывает в дефолтной карточке товара и категорически не хочет в модалке? Надіслати Поділитися на інших сайтах More sharing options... Padlik Опубліковано: 24 квітня 2020 Автор Share Опубліковано: 24 квітня 2020 (змінено) Только что, anboza сказал: не очень понятна суть хлебных крошек в попапе.....смысл в чем? Мне тоже смысл не понятен, но заказчику нарисовали такой дизайн. Ориентировались на один крупный магазин. Задумка, полагаю, в том, чтобы быстро перейти, к примеру, в родительскую категорию, если уровень вложенности категорий больше 3-х, к примеру. Змінено 24 квітня 2020 користувачем Padlik Надіслати Поділитися на інших сайтах More sharing options... anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, Padlik сказал: Мне тоже смысл не понятен, но заказчику нарисовали такой дизайн. Ориентировались на один крупный магазин. я просто не очень понимаю, как этим воспользоваться в модальном окне.... Вы бы поговорили с заказчиком, что это дикая дичь... Надіслати Поділитися на інших сайтах More sharing options... zCarot Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 24 минуты назад, Padlik сказал: Всем привет. Прошу помочь. Делаю показ товара в модальном окне на странице категории (быстрый просмотр). Создал контроллер prodmodal (скопировал контроллер товара, за некоторыми изменениями), добавил шаблон (скопировал tpl товара, убрав шапку, футер, колонки). Дописал вызов открытия окна в popup в common.js. Проблема в том, что нужно получить в модальном окне полный путь в breadcumbs как и на обычной странице товара. Seo pro включен и на обычных страницах работает. Однако при открытии товара в модальном окне крошки имеют вид Главная > Товар. Пробовал плясать вокруг получения path. Не могу понять, почему путь до товара не работает, когда по сути я копирую контроллер товара и получаю рендеринг html страницы товара в модальном окне, но на странице категории. Прошу помочь, навести на путь истинный. Ван в платный Возможно даже сможет сделать @chukcha Надіслати Поділитися на інших сайтах More sharing options... anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, zCarot сказал: Ван в платный Возможно даже сможет сделать @chukcha согласен, @chukcha - уважаемый комрад, спору нет. Вопрос только в том, зачем это делать?))) Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 1 минуту назад, zCarot сказал: Возможно даже сможет сделать моя тут какой бок стояла? Надіслати Поділитися на інших сайтах More sharing options... anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, chukcha сказал: моя тут какой бок стояла? он ваш крошка шатал ))) Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 ЗАЧЕМ!!! крошка шатать? Крошка надо кушать. Однако, то не мой крошка, то их крошка, а нам чужой крошка не нужен Надіслати Поділитися на інших сайтах More sharing options... anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, chukcha сказал: ЗАЧЕМ!!! крошка шатать? Крошка надо кушать. Однако, то не мой крошка, то их крошка, а нам чужой крошка не нужен в модальном окне крошка - это отдельный вид шатания!!)))) Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 36 минут назад, Padlik сказал: Я не пойму почему отрабатывает в дефолтной карточке товара и категорически не хочет в модалке? Предполагаю что не передали в модаль это: $this->request->get['path'] Но если есть main_category, то надо в контроллере перебирать. Типа такого: $this->load->model('catalog/product'); $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if (!isset($this->request->get['path']) && !isset($this->request->get['manufacturer_id']) && !isset($this->request->get['search']) && !isset($this->request->get['tag'])) { $main_category = $this->model_catalog_product->getMainCategory($product_id); if ($main_category) { $this->request->get['path'] = $this->model_catalog_category->getCategoryPath($main_category); $path = ''; $parts = explode('_', (string)$this->request->get['path']); (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($main_category); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } } 1 Надіслати Поділитися на інших сайтах More sharing options... Padlik Опубліковано: 24 квітня 2020 Автор Share Опубліковано: 24 квітня 2020 @optimlab Благодарю Вас. С Вашей помощью осилил. В контроллер модуля товара для модального окна после if ($product_info) { if (!isset($this->request->get['path']) && !isset($this->request->get['manufacturer_id']) && !isset($this->request->get['search']) && !isset($this->request->get['tag'])) { $main_category = $this->model_catalog_product->getProductMainCategoryId($product_id); if ($main_category) { $this->request->get['path'] = $this->model_catalog_category->getCategoryPath($main_category); $path = ''; $parts = explode('_', (string)$this->request->get['path']); (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($main_category); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } } В модель product.php public function getProductMainCategoryId($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1' LIMIT 1"); return ($query->num_rows ? (int)$query->row['category_id'] : 0); } В модель category.php public function getCategoryPath($category_id){ $path = ''; $category = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c WHERE c.category_id = " .(int)($category_id)); if($category->row['parent_id'] != 0){ $path .= $this->getCategoryPath($category->row['parent_id']) . '_'; } $path .= $category->row['category_id']; return $path; } И вот живой пример того, где используются крошки https://sbermarket.ru/metro/voda-aqua-minerale-nieghazirovannaia-4 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар. Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: И вот живой пример того, где используются крошки https://sbermarket.ru/metro/voda-aqua-minerale-nieghazirovannaia-4 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар. Отлично! Да, кстати, мне понравилась идея с хлебными крошками. Сразу видно где ты, так как в некоторых категориях вообще ХК отсутствуют. Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: return ($query->num_rows ? (int)$query->row['category_id'] : 0); Хотел еще спросить, почему у вас это выражение ТРУ? У вас же лимит 1 и должна быть одна строка на выходе! Как так? У меня методы немного другие: public function getMainCategory($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1'"); if ($query->row) { return $query->row['category_id']; } else { return ''; } } public function getCategoryPath($category_id) { $query = $this->db->query("SELECT GROUP_CONCAT( path_id ORDER BY level SEPARATOR '_' ) AS path FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "'"); return $query->row['path']; } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Хлебные крошки в модальном окне Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 не очень понятна суть хлебных крошек в попапе.....смысл в чем? Надіслати Поділитися на інших сайтах More sharing options... Padlik Опубліковано: 24 квітня 2020 Автор Share Опубліковано: 24 квітня 2020 $this->load->model('catalog/category'); if (isset($this->request->get['path'])) { $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = $path_id; } else { $path .= '_' . $path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } Я не пойму почему отрабатывает в дефолтной карточке товара и категорически не хочет в модалке? Надіслати Поділитися на інших сайтах More sharing options... Padlik Опубліковано: 24 квітня 2020 Автор Share Опубліковано: 24 квітня 2020 (змінено) Только что, anboza сказал: не очень понятна суть хлебных крошек в попапе.....смысл в чем? Мне тоже смысл не понятен, но заказчику нарисовали такой дизайн. Ориентировались на один крупный магазин. Задумка, полагаю, в том, чтобы быстро перейти, к примеру, в родительскую категорию, если уровень вложенности категорий больше 3-х, к примеру. Змінено 24 квітня 2020 користувачем Padlik Надіслати Поділитися на інших сайтах More sharing options... anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, Padlik сказал: Мне тоже смысл не понятен, но заказчику нарисовали такой дизайн. Ориентировались на один крупный магазин. я просто не очень понимаю, как этим воспользоваться в модальном окне.... Вы бы поговорили с заказчиком, что это дикая дичь... Надіслати Поділитися на інших сайтах More sharing options... zCarot Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 24 минуты назад, Padlik сказал: Всем привет. Прошу помочь. Делаю показ товара в модальном окне на странице категории (быстрый просмотр). Создал контроллер prodmodal (скопировал контроллер товара, за некоторыми изменениями), добавил шаблон (скопировал tpl товара, убрав шапку, футер, колонки). Дописал вызов открытия окна в popup в common.js. Проблема в том, что нужно получить в модальном окне полный путь в breadcumbs как и на обычной странице товара. Seo pro включен и на обычных страницах работает. Однако при открытии товара в модальном окне крошки имеют вид Главная > Товар. Пробовал плясать вокруг получения path. Не могу понять, почему путь до товара не работает, когда по сути я копирую контроллер товара и получаю рендеринг html страницы товара в модальном окне, но на странице категории. Прошу помочь, навести на путь истинный. Ван в платный Возможно даже сможет сделать @chukcha Надіслати Поділитися на інших сайтах More sharing options... anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, zCarot сказал: Ван в платный Возможно даже сможет сделать @chukcha согласен, @chukcha - уважаемый комрад, спору нет. Вопрос только в том, зачем это делать?))) Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 1 минуту назад, zCarot сказал: Возможно даже сможет сделать моя тут какой бок стояла? Надіслати Поділитися на інших сайтах More sharing options... anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, chukcha сказал: моя тут какой бок стояла? он ваш крошка шатал ))) Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 ЗАЧЕМ!!! крошка шатать? Крошка надо кушать. Однако, то не мой крошка, то их крошка, а нам чужой крошка не нужен Надіслати Поділитися на інших сайтах More sharing options... anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, chukcha сказал: ЗАЧЕМ!!! крошка шатать? Крошка надо кушать. Однако, то не мой крошка, то их крошка, а нам чужой крошка не нужен в модальном окне крошка - это отдельный вид шатания!!)))) Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 36 минут назад, Padlik сказал: Я не пойму почему отрабатывает в дефолтной карточке товара и категорически не хочет в модалке? Предполагаю что не передали в модаль это: $this->request->get['path'] Но если есть main_category, то надо в контроллере перебирать. Типа такого: $this->load->model('catalog/product'); $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if (!isset($this->request->get['path']) && !isset($this->request->get['manufacturer_id']) && !isset($this->request->get['search']) && !isset($this->request->get['tag'])) { $main_category = $this->model_catalog_product->getMainCategory($product_id); if ($main_category) { $this->request->get['path'] = $this->model_catalog_category->getCategoryPath($main_category); $path = ''; $parts = explode('_', (string)$this->request->get['path']); (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($main_category); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } } 1 Надіслати Поділитися на інших сайтах More sharing options... Padlik Опубліковано: 24 квітня 2020 Автор Share Опубліковано: 24 квітня 2020 @optimlab Благодарю Вас. С Вашей помощью осилил. В контроллер модуля товара для модального окна после if ($product_info) { if (!isset($this->request->get['path']) && !isset($this->request->get['manufacturer_id']) && !isset($this->request->get['search']) && !isset($this->request->get['tag'])) { $main_category = $this->model_catalog_product->getProductMainCategoryId($product_id); if ($main_category) { $this->request->get['path'] = $this->model_catalog_category->getCategoryPath($main_category); $path = ''; $parts = explode('_', (string)$this->request->get['path']); (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($main_category); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } } В модель product.php public function getProductMainCategoryId($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1' LIMIT 1"); return ($query->num_rows ? (int)$query->row['category_id'] : 0); } В модель category.php public function getCategoryPath($category_id){ $path = ''; $category = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c WHERE c.category_id = " .(int)($category_id)); if($category->row['parent_id'] != 0){ $path .= $this->getCategoryPath($category->row['parent_id']) . '_'; } $path .= $category->row['category_id']; return $path; } И вот живой пример того, где используются крошки https://sbermarket.ru/metro/voda-aqua-minerale-nieghazirovannaia-4 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар. Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: И вот живой пример того, где используются крошки https://sbermarket.ru/metro/voda-aqua-minerale-nieghazirovannaia-4 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар. Отлично! Да, кстати, мне понравилась идея с хлебными крошками. Сразу видно где ты, так как в некоторых категориях вообще ХК отсутствуют. Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: return ($query->num_rows ? (int)$query->row['category_id'] : 0); Хотел еще спросить, почему у вас это выражение ТРУ? У вас же лимит 1 и должна быть одна строка на выходе! Как так? У меня методы немного другие: public function getMainCategory($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1'"); if ($query->row) { return $query->row['category_id']; } else { return ''; } } public function getCategoryPath($category_id) { $query = $this->db->query("SELECT GROUP_CONCAT( path_id ORDER BY level SEPARATOR '_' ) AS path FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "'"); return $query->row['path']; } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Хлебные крошки в модальном окне Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
Padlik Опубліковано: 24 квітня 2020 Автор Share Опубліковано: 24 квітня 2020 $this->load->model('catalog/category'); if (isset($this->request->get['path'])) { $path = ''; $parts = explode('_', (string)$this->request->get['path']); $category_id = (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = $path_id; } else { $path .= '_' . $path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($category_id); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } Я не пойму почему отрабатывает в дефолтной карточке товара и категорически не хочет в модалке? Надіслати Поділитися на інших сайтах More sharing options...
Padlik Опубліковано: 24 квітня 2020 Автор Share Опубліковано: 24 квітня 2020 (змінено) Только что, anboza сказал: не очень понятна суть хлебных крошек в попапе.....смысл в чем? Мне тоже смысл не понятен, но заказчику нарисовали такой дизайн. Ориентировались на один крупный магазин. Задумка, полагаю, в том, чтобы быстро перейти, к примеру, в родительскую категорию, если уровень вложенности категорий больше 3-х, к примеру. Змінено 24 квітня 2020 користувачем Padlik Надіслати Поділитися на інших сайтах More sharing options...
anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, Padlik сказал: Мне тоже смысл не понятен, но заказчику нарисовали такой дизайн. Ориентировались на один крупный магазин. я просто не очень понимаю, как этим воспользоваться в модальном окне.... Вы бы поговорили с заказчиком, что это дикая дичь... Надіслати Поділитися на інших сайтах More sharing options... zCarot Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 24 минуты назад, Padlik сказал: Всем привет. Прошу помочь. Делаю показ товара в модальном окне на странице категории (быстрый просмотр). Создал контроллер prodmodal (скопировал контроллер товара, за некоторыми изменениями), добавил шаблон (скопировал tpl товара, убрав шапку, футер, колонки). Дописал вызов открытия окна в popup в common.js. Проблема в том, что нужно получить в модальном окне полный путь в breadcumbs как и на обычной странице товара. Seo pro включен и на обычных страницах работает. Однако при открытии товара в модальном окне крошки имеют вид Главная > Товар. Пробовал плясать вокруг получения path. Не могу понять, почему путь до товара не работает, когда по сути я копирую контроллер товара и получаю рендеринг html страницы товара в модальном окне, но на странице категории. Прошу помочь, навести на путь истинный. Ван в платный Возможно даже сможет сделать @chukcha Надіслати Поділитися на інших сайтах More sharing options... anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, zCarot сказал: Ван в платный Возможно даже сможет сделать @chukcha согласен, @chukcha - уважаемый комрад, спору нет. Вопрос только в том, зачем это делать?))) Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 1 минуту назад, zCarot сказал: Возможно даже сможет сделать моя тут какой бок стояла? Надіслати Поділитися на інших сайтах More sharing options... anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, chukcha сказал: моя тут какой бок стояла? он ваш крошка шатал ))) Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 ЗАЧЕМ!!! крошка шатать? Крошка надо кушать. Однако, то не мой крошка, то их крошка, а нам чужой крошка не нужен Надіслати Поділитися на інших сайтах More sharing options... anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, chukcha сказал: ЗАЧЕМ!!! крошка шатать? Крошка надо кушать. Однако, то не мой крошка, то их крошка, а нам чужой крошка не нужен в модальном окне крошка - это отдельный вид шатания!!)))) Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 36 минут назад, Padlik сказал: Я не пойму почему отрабатывает в дефолтной карточке товара и категорически не хочет в модалке? Предполагаю что не передали в модаль это: $this->request->get['path'] Но если есть main_category, то надо в контроллере перебирать. Типа такого: $this->load->model('catalog/product'); $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if (!isset($this->request->get['path']) && !isset($this->request->get['manufacturer_id']) && !isset($this->request->get['search']) && !isset($this->request->get['tag'])) { $main_category = $this->model_catalog_product->getMainCategory($product_id); if ($main_category) { $this->request->get['path'] = $this->model_catalog_category->getCategoryPath($main_category); $path = ''; $parts = explode('_', (string)$this->request->get['path']); (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($main_category); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } } 1 Надіслати Поділитися на інших сайтах More sharing options... Padlik Опубліковано: 24 квітня 2020 Автор Share Опубліковано: 24 квітня 2020 @optimlab Благодарю Вас. С Вашей помощью осилил. В контроллер модуля товара для модального окна после if ($product_info) { if (!isset($this->request->get['path']) && !isset($this->request->get['manufacturer_id']) && !isset($this->request->get['search']) && !isset($this->request->get['tag'])) { $main_category = $this->model_catalog_product->getProductMainCategoryId($product_id); if ($main_category) { $this->request->get['path'] = $this->model_catalog_category->getCategoryPath($main_category); $path = ''; $parts = explode('_', (string)$this->request->get['path']); (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($main_category); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } } В модель product.php public function getProductMainCategoryId($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1' LIMIT 1"); return ($query->num_rows ? (int)$query->row['category_id'] : 0); } В модель category.php public function getCategoryPath($category_id){ $path = ''; $category = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c WHERE c.category_id = " .(int)($category_id)); if($category->row['parent_id'] != 0){ $path .= $this->getCategoryPath($category->row['parent_id']) . '_'; } $path .= $category->row['category_id']; return $path; } И вот живой пример того, где используются крошки https://sbermarket.ru/metro/voda-aqua-minerale-nieghazirovannaia-4 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар. Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: И вот живой пример того, где используются крошки https://sbermarket.ru/metro/voda-aqua-minerale-nieghazirovannaia-4 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар. Отлично! Да, кстати, мне понравилась идея с хлебными крошками. Сразу видно где ты, так как в некоторых категориях вообще ХК отсутствуют. Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: return ($query->num_rows ? (int)$query->row['category_id'] : 0); Хотел еще спросить, почему у вас это выражение ТРУ? У вас же лимит 1 и должна быть одна строка на выходе! Как так? У меня методы немного другие: public function getMainCategory($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1'"); if ($query->row) { return $query->row['category_id']; } else { return ''; } } public function getCategoryPath($category_id) { $query = $this->db->query("SELECT GROUP_CONCAT( path_id ORDER BY level SEPARATOR '_' ) AS path FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "'"); return $query->row['path']; } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Хлебные крошки в модальном окне Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
zCarot Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 24 минуты назад, Padlik сказал: Всем привет. Прошу помочь. Делаю показ товара в модальном окне на странице категории (быстрый просмотр). Создал контроллер prodmodal (скопировал контроллер товара, за некоторыми изменениями), добавил шаблон (скопировал tpl товара, убрав шапку, футер, колонки). Дописал вызов открытия окна в popup в common.js. Проблема в том, что нужно получить в модальном окне полный путь в breadcumbs как и на обычной странице товара. Seo pro включен и на обычных страницах работает. Однако при открытии товара в модальном окне крошки имеют вид Главная > Товар. Пробовал плясать вокруг получения path. Не могу понять, почему путь до товара не работает, когда по сути я копирую контроллер товара и получаю рендеринг html страницы товара в модальном окне, но на странице категории. Прошу помочь, навести на путь истинный. Ван в платный Возможно даже сможет сделать @chukcha Надіслати Поділитися на інших сайтах More sharing options... anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, zCarot сказал: Ван в платный Возможно даже сможет сделать @chukcha согласен, @chukcha - уважаемый комрад, спору нет. Вопрос только в том, зачем это делать?))) Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 1 минуту назад, zCarot сказал: Возможно даже сможет сделать моя тут какой бок стояла? Надіслати Поділитися на інших сайтах More sharing options... anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, chukcha сказал: моя тут какой бок стояла? он ваш крошка шатал ))) Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 ЗАЧЕМ!!! крошка шатать? Крошка надо кушать. Однако, то не мой крошка, то их крошка, а нам чужой крошка не нужен Надіслати Поділитися на інших сайтах More sharing options... anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, chukcha сказал: ЗАЧЕМ!!! крошка шатать? Крошка надо кушать. Однако, то не мой крошка, то их крошка, а нам чужой крошка не нужен в модальном окне крошка - это отдельный вид шатания!!)))) Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 36 минут назад, Padlik сказал: Я не пойму почему отрабатывает в дефолтной карточке товара и категорически не хочет в модалке? Предполагаю что не передали в модаль это: $this->request->get['path'] Но если есть main_category, то надо в контроллере перебирать. Типа такого: $this->load->model('catalog/product'); $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if (!isset($this->request->get['path']) && !isset($this->request->get['manufacturer_id']) && !isset($this->request->get['search']) && !isset($this->request->get['tag'])) { $main_category = $this->model_catalog_product->getMainCategory($product_id); if ($main_category) { $this->request->get['path'] = $this->model_catalog_category->getCategoryPath($main_category); $path = ''; $parts = explode('_', (string)$this->request->get['path']); (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($main_category); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } } 1 Надіслати Поділитися на інших сайтах More sharing options... Padlik Опубліковано: 24 квітня 2020 Автор Share Опубліковано: 24 квітня 2020 @optimlab Благодарю Вас. С Вашей помощью осилил. В контроллер модуля товара для модального окна после if ($product_info) { if (!isset($this->request->get['path']) && !isset($this->request->get['manufacturer_id']) && !isset($this->request->get['search']) && !isset($this->request->get['tag'])) { $main_category = $this->model_catalog_product->getProductMainCategoryId($product_id); if ($main_category) { $this->request->get['path'] = $this->model_catalog_category->getCategoryPath($main_category); $path = ''; $parts = explode('_', (string)$this->request->get['path']); (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($main_category); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } } В модель product.php public function getProductMainCategoryId($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1' LIMIT 1"); return ($query->num_rows ? (int)$query->row['category_id'] : 0); } В модель category.php public function getCategoryPath($category_id){ $path = ''; $category = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c WHERE c.category_id = " .(int)($category_id)); if($category->row['parent_id'] != 0){ $path .= $this->getCategoryPath($category->row['parent_id']) . '_'; } $path .= $category->row['category_id']; return $path; } И вот живой пример того, где используются крошки https://sbermarket.ru/metro/voda-aqua-minerale-nieghazirovannaia-4 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар. Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: И вот живой пример того, где используются крошки https://sbermarket.ru/metro/voda-aqua-minerale-nieghazirovannaia-4 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар. Отлично! Да, кстати, мне понравилась идея с хлебными крошками. Сразу видно где ты, так как в некоторых категориях вообще ХК отсутствуют. Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: return ($query->num_rows ? (int)$query->row['category_id'] : 0); Хотел еще спросить, почему у вас это выражение ТРУ? У вас же лимит 1 и должна быть одна строка на выходе! Как так? У меня методы немного другие: public function getMainCategory($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1'"); if ($query->row) { return $query->row['category_id']; } else { return ''; } } public function getCategoryPath($category_id) { $query = $this->db->query("SELECT GROUP_CONCAT( path_id ORDER BY level SEPARATOR '_' ) AS path FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "'"); return $query->row['path']; } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Хлебные крошки в модальном окне Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, zCarot сказал: Ван в платный Возможно даже сможет сделать @chukcha согласен, @chukcha - уважаемый комрад, спору нет. Вопрос только в том, зачем это делать?))) Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 1 минуту назад, zCarot сказал: Возможно даже сможет сделать моя тут какой бок стояла? Надіслати Поділитися на інших сайтах More sharing options... anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, chukcha сказал: моя тут какой бок стояла? он ваш крошка шатал ))) Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 ЗАЧЕМ!!! крошка шатать? Крошка надо кушать. Однако, то не мой крошка, то их крошка, а нам чужой крошка не нужен Надіслати Поділитися на інших сайтах More sharing options... anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, chukcha сказал: ЗАЧЕМ!!! крошка шатать? Крошка надо кушать. Однако, то не мой крошка, то их крошка, а нам чужой крошка не нужен в модальном окне крошка - это отдельный вид шатания!!)))) Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 36 минут назад, Padlik сказал: Я не пойму почему отрабатывает в дефолтной карточке товара и категорически не хочет в модалке? Предполагаю что не передали в модаль это: $this->request->get['path'] Но если есть main_category, то надо в контроллере перебирать. Типа такого: $this->load->model('catalog/product'); $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if (!isset($this->request->get['path']) && !isset($this->request->get['manufacturer_id']) && !isset($this->request->get['search']) && !isset($this->request->get['tag'])) { $main_category = $this->model_catalog_product->getMainCategory($product_id); if ($main_category) { $this->request->get['path'] = $this->model_catalog_category->getCategoryPath($main_category); $path = ''; $parts = explode('_', (string)$this->request->get['path']); (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($main_category); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } } 1 Надіслати Поділитися на інших сайтах More sharing options... Padlik Опубліковано: 24 квітня 2020 Автор Share Опубліковано: 24 квітня 2020 @optimlab Благодарю Вас. С Вашей помощью осилил. В контроллер модуля товара для модального окна после if ($product_info) { if (!isset($this->request->get['path']) && !isset($this->request->get['manufacturer_id']) && !isset($this->request->get['search']) && !isset($this->request->get['tag'])) { $main_category = $this->model_catalog_product->getProductMainCategoryId($product_id); if ($main_category) { $this->request->get['path'] = $this->model_catalog_category->getCategoryPath($main_category); $path = ''; $parts = explode('_', (string)$this->request->get['path']); (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($main_category); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } } В модель product.php public function getProductMainCategoryId($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1' LIMIT 1"); return ($query->num_rows ? (int)$query->row['category_id'] : 0); } В модель category.php public function getCategoryPath($category_id){ $path = ''; $category = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c WHERE c.category_id = " .(int)($category_id)); if($category->row['parent_id'] != 0){ $path .= $this->getCategoryPath($category->row['parent_id']) . '_'; } $path .= $category->row['category_id']; return $path; } И вот живой пример того, где используются крошки https://sbermarket.ru/metro/voda-aqua-minerale-nieghazirovannaia-4 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар. Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: И вот живой пример того, где используются крошки https://sbermarket.ru/metro/voda-aqua-minerale-nieghazirovannaia-4 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар. Отлично! Да, кстати, мне понравилась идея с хлебными крошками. Сразу видно где ты, так как в некоторых категориях вообще ХК отсутствуют. Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: return ($query->num_rows ? (int)$query->row['category_id'] : 0); Хотел еще спросить, почему у вас это выражение ТРУ? У вас же лимит 1 и должна быть одна строка на выходе! Как так? У меня методы немного другие: public function getMainCategory($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1'"); if ($query->row) { return $query->row['category_id']; } else { return ''; } } public function getCategoryPath($category_id) { $query = $this->db->query("SELECT GROUP_CONCAT( path_id ORDER BY level SEPARATOR '_' ) AS path FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "'"); return $query->row['path']; } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Хлебные крошки в модальном окне Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
chukcha Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 1 минуту назад, zCarot сказал: Возможно даже сможет сделать моя тут какой бок стояла? Надіслати Поділитися на інших сайтах More sharing options... anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, chukcha сказал: моя тут какой бок стояла? он ваш крошка шатал ))) Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 ЗАЧЕМ!!! крошка шатать? Крошка надо кушать. Однако, то не мой крошка, то их крошка, а нам чужой крошка не нужен Надіслати Поділитися на інших сайтах More sharing options... anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, chukcha сказал: ЗАЧЕМ!!! крошка шатать? Крошка надо кушать. Однако, то не мой крошка, то их крошка, а нам чужой крошка не нужен в модальном окне крошка - это отдельный вид шатания!!)))) Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 36 минут назад, Padlik сказал: Я не пойму почему отрабатывает в дефолтной карточке товара и категорически не хочет в модалке? Предполагаю что не передали в модаль это: $this->request->get['path'] Но если есть main_category, то надо в контроллере перебирать. Типа такого: $this->load->model('catalog/product'); $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if (!isset($this->request->get['path']) && !isset($this->request->get['manufacturer_id']) && !isset($this->request->get['search']) && !isset($this->request->get['tag'])) { $main_category = $this->model_catalog_product->getMainCategory($product_id); if ($main_category) { $this->request->get['path'] = $this->model_catalog_category->getCategoryPath($main_category); $path = ''; $parts = explode('_', (string)$this->request->get['path']); (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($main_category); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } } 1 Надіслати Поділитися на інших сайтах More sharing options... Padlik Опубліковано: 24 квітня 2020 Автор Share Опубліковано: 24 квітня 2020 @optimlab Благодарю Вас. С Вашей помощью осилил. В контроллер модуля товара для модального окна после if ($product_info) { if (!isset($this->request->get['path']) && !isset($this->request->get['manufacturer_id']) && !isset($this->request->get['search']) && !isset($this->request->get['tag'])) { $main_category = $this->model_catalog_product->getProductMainCategoryId($product_id); if ($main_category) { $this->request->get['path'] = $this->model_catalog_category->getCategoryPath($main_category); $path = ''; $parts = explode('_', (string)$this->request->get['path']); (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($main_category); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } } В модель product.php public function getProductMainCategoryId($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1' LIMIT 1"); return ($query->num_rows ? (int)$query->row['category_id'] : 0); } В модель category.php public function getCategoryPath($category_id){ $path = ''; $category = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c WHERE c.category_id = " .(int)($category_id)); if($category->row['parent_id'] != 0){ $path .= $this->getCategoryPath($category->row['parent_id']) . '_'; } $path .= $category->row['category_id']; return $path; } И вот живой пример того, где используются крошки https://sbermarket.ru/metro/voda-aqua-minerale-nieghazirovannaia-4 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар. Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: И вот живой пример того, где используются крошки https://sbermarket.ru/metro/voda-aqua-minerale-nieghazirovannaia-4 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар. Отлично! Да, кстати, мне понравилась идея с хлебными крошками. Сразу видно где ты, так как в некоторых категориях вообще ХК отсутствуют. Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: return ($query->num_rows ? (int)$query->row['category_id'] : 0); Хотел еще спросить, почему у вас это выражение ТРУ? У вас же лимит 1 и должна быть одна строка на выходе! Как так? У меня методы немного другие: public function getMainCategory($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1'"); if ($query->row) { return $query->row['category_id']; } else { return ''; } } public function getCategoryPath($category_id) { $query = $this->db->query("SELECT GROUP_CONCAT( path_id ORDER BY level SEPARATOR '_' ) AS path FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "'"); return $query->row['path']; } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Хлебные крошки в модальном окне Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, chukcha сказал: моя тут какой бок стояла? он ваш крошка шатал ))) Надіслати Поділитися на інших сайтах More sharing options... chukcha Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 ЗАЧЕМ!!! крошка шатать? Крошка надо кушать. Однако, то не мой крошка, то их крошка, а нам чужой крошка не нужен Надіслати Поділитися на інших сайтах More sharing options... anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, chukcha сказал: ЗАЧЕМ!!! крошка шатать? Крошка надо кушать. Однако, то не мой крошка, то их крошка, а нам чужой крошка не нужен в модальном окне крошка - это отдельный вид шатания!!)))) Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 36 минут назад, Padlik сказал: Я не пойму почему отрабатывает в дефолтной карточке товара и категорически не хочет в модалке? Предполагаю что не передали в модаль это: $this->request->get['path'] Но если есть main_category, то надо в контроллере перебирать. Типа такого: $this->load->model('catalog/product'); $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if (!isset($this->request->get['path']) && !isset($this->request->get['manufacturer_id']) && !isset($this->request->get['search']) && !isset($this->request->get['tag'])) { $main_category = $this->model_catalog_product->getMainCategory($product_id); if ($main_category) { $this->request->get['path'] = $this->model_catalog_category->getCategoryPath($main_category); $path = ''; $parts = explode('_', (string)$this->request->get['path']); (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($main_category); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } } 1 Надіслати Поділитися на інших сайтах More sharing options... Padlik Опубліковано: 24 квітня 2020 Автор Share Опубліковано: 24 квітня 2020 @optimlab Благодарю Вас. С Вашей помощью осилил. В контроллер модуля товара для модального окна после if ($product_info) { if (!isset($this->request->get['path']) && !isset($this->request->get['manufacturer_id']) && !isset($this->request->get['search']) && !isset($this->request->get['tag'])) { $main_category = $this->model_catalog_product->getProductMainCategoryId($product_id); if ($main_category) { $this->request->get['path'] = $this->model_catalog_category->getCategoryPath($main_category); $path = ''; $parts = explode('_', (string)$this->request->get['path']); (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($main_category); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } } В модель product.php public function getProductMainCategoryId($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1' LIMIT 1"); return ($query->num_rows ? (int)$query->row['category_id'] : 0); } В модель category.php public function getCategoryPath($category_id){ $path = ''; $category = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c WHERE c.category_id = " .(int)($category_id)); if($category->row['parent_id'] != 0){ $path .= $this->getCategoryPath($category->row['parent_id']) . '_'; } $path .= $category->row['category_id']; return $path; } И вот живой пример того, где используются крошки https://sbermarket.ru/metro/voda-aqua-minerale-nieghazirovannaia-4 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар. Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: И вот живой пример того, где используются крошки https://sbermarket.ru/metro/voda-aqua-minerale-nieghazirovannaia-4 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар. Отлично! Да, кстати, мне понравилась идея с хлебными крошками. Сразу видно где ты, так как в некоторых категориях вообще ХК отсутствуют. Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: return ($query->num_rows ? (int)$query->row['category_id'] : 0); Хотел еще спросить, почему у вас это выражение ТРУ? У вас же лимит 1 и должна быть одна строка на выходе! Как так? У меня методы немного другие: public function getMainCategory($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1'"); if ($query->row) { return $query->row['category_id']; } else { return ''; } } public function getCategoryPath($category_id) { $query = $this->db->query("SELECT GROUP_CONCAT( path_id ORDER BY level SEPARATOR '_' ) AS path FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "'"); return $query->row['path']; } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Хлебные крошки в модальном окне Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
chukcha Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 ЗАЧЕМ!!! крошка шатать? Крошка надо кушать. Однако, то не мой крошка, то их крошка, а нам чужой крошка не нужен Надіслати Поділитися на інших сайтах More sharing options... anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, chukcha сказал: ЗАЧЕМ!!! крошка шатать? Крошка надо кушать. Однако, то не мой крошка, то их крошка, а нам чужой крошка не нужен в модальном окне крошка - это отдельный вид шатания!!)))) Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 36 минут назад, Padlik сказал: Я не пойму почему отрабатывает в дефолтной карточке товара и категорически не хочет в модалке? Предполагаю что не передали в модаль это: $this->request->get['path'] Но если есть main_category, то надо в контроллере перебирать. Типа такого: $this->load->model('catalog/product'); $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if (!isset($this->request->get['path']) && !isset($this->request->get['manufacturer_id']) && !isset($this->request->get['search']) && !isset($this->request->get['tag'])) { $main_category = $this->model_catalog_product->getMainCategory($product_id); if ($main_category) { $this->request->get['path'] = $this->model_catalog_category->getCategoryPath($main_category); $path = ''; $parts = explode('_', (string)$this->request->get['path']); (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($main_category); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } } 1 Надіслати Поділитися на інших сайтах More sharing options... Padlik Опубліковано: 24 квітня 2020 Автор Share Опубліковано: 24 квітня 2020 @optimlab Благодарю Вас. С Вашей помощью осилил. В контроллер модуля товара для модального окна после if ($product_info) { if (!isset($this->request->get['path']) && !isset($this->request->get['manufacturer_id']) && !isset($this->request->get['search']) && !isset($this->request->get['tag'])) { $main_category = $this->model_catalog_product->getProductMainCategoryId($product_id); if ($main_category) { $this->request->get['path'] = $this->model_catalog_category->getCategoryPath($main_category); $path = ''; $parts = explode('_', (string)$this->request->get['path']); (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($main_category); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } } В модель product.php public function getProductMainCategoryId($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1' LIMIT 1"); return ($query->num_rows ? (int)$query->row['category_id'] : 0); } В модель category.php public function getCategoryPath($category_id){ $path = ''; $category = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c WHERE c.category_id = " .(int)($category_id)); if($category->row['parent_id'] != 0){ $path .= $this->getCategoryPath($category->row['parent_id']) . '_'; } $path .= $category->row['category_id']; return $path; } И вот живой пример того, где используются крошки https://sbermarket.ru/metro/voda-aqua-minerale-nieghazirovannaia-4 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар. Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: И вот живой пример того, где используются крошки https://sbermarket.ru/metro/voda-aqua-minerale-nieghazirovannaia-4 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар. Отлично! Да, кстати, мне понравилась идея с хлебными крошками. Сразу видно где ты, так как в некоторых категориях вообще ХК отсутствуют. Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: return ($query->num_rows ? (int)$query->row['category_id'] : 0); Хотел еще спросить, почему у вас это выражение ТРУ? У вас же лимит 1 и должна быть одна строка на выходе! Как так? У меня методы немного другие: public function getMainCategory($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1'"); if ($query->row) { return $query->row['category_id']; } else { return ''; } } public function getCategoryPath($category_id) { $query = $this->db->query("SELECT GROUP_CONCAT( path_id ORDER BY level SEPARATOR '_' ) AS path FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "'"); return $query->row['path']; } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Хлебные крошки в модальном окне Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень 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 і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
anboza Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 Только что, chukcha сказал: ЗАЧЕМ!!! крошка шатать? Крошка надо кушать. Однако, то не мой крошка, то их крошка, а нам чужой крошка не нужен в модальном окне крошка - это отдельный вид шатания!!)))) Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 36 минут назад, Padlik сказал: Я не пойму почему отрабатывает в дефолтной карточке товара и категорически не хочет в модалке? Предполагаю что не передали в модаль это: $this->request->get['path'] Но если есть main_category, то надо в контроллере перебирать. Типа такого: $this->load->model('catalog/product'); $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if (!isset($this->request->get['path']) && !isset($this->request->get['manufacturer_id']) && !isset($this->request->get['search']) && !isset($this->request->get['tag'])) { $main_category = $this->model_catalog_product->getMainCategory($product_id); if ($main_category) { $this->request->get['path'] = $this->model_catalog_category->getCategoryPath($main_category); $path = ''; $parts = explode('_', (string)$this->request->get['path']); (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($main_category); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } } 1 Надіслати Поділитися на інших сайтах More sharing options... Padlik Опубліковано: 24 квітня 2020 Автор Share Опубліковано: 24 квітня 2020 @optimlab Благодарю Вас. С Вашей помощью осилил. В контроллер модуля товара для модального окна после if ($product_info) { if (!isset($this->request->get['path']) && !isset($this->request->get['manufacturer_id']) && !isset($this->request->get['search']) && !isset($this->request->get['tag'])) { $main_category = $this->model_catalog_product->getProductMainCategoryId($product_id); if ($main_category) { $this->request->get['path'] = $this->model_catalog_category->getCategoryPath($main_category); $path = ''; $parts = explode('_', (string)$this->request->get['path']); (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($main_category); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } } В модель product.php public function getProductMainCategoryId($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1' LIMIT 1"); return ($query->num_rows ? (int)$query->row['category_id'] : 0); } В модель category.php public function getCategoryPath($category_id){ $path = ''; $category = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c WHERE c.category_id = " .(int)($category_id)); if($category->row['parent_id'] != 0){ $path .= $this->getCategoryPath($category->row['parent_id']) . '_'; } $path .= $category->row['category_id']; return $path; } И вот живой пример того, где используются крошки https://sbermarket.ru/metro/voda-aqua-minerale-nieghazirovannaia-4 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар. Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: И вот живой пример того, где используются крошки https://sbermarket.ru/metro/voda-aqua-minerale-nieghazirovannaia-4 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар. Отлично! Да, кстати, мне понравилась идея с хлебными крошками. Сразу видно где ты, так как в некоторых категориях вообще ХК отсутствуют. Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: return ($query->num_rows ? (int)$query->row['category_id'] : 0); Хотел еще спросить, почему у вас это выражение ТРУ? У вас же лимит 1 и должна быть одна строка на выходе! Как так? У меня методы немного другие: public function getMainCategory($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1'"); if ($query->row) { return $query->row['category_id']; } else { return ''; } } public function getCategoryPath($category_id) { $query = $this->db->query("SELECT GROUP_CONCAT( path_id ORDER BY level SEPARATOR '_' ) AS path FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "'"); return $query->row['path']; } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Хлебные крошки в модальном окне Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
optimlab Опубліковано: 24 квітня 2020 Share Опубліковано: 24 квітня 2020 36 минут назад, Padlik сказал: Я не пойму почему отрабатывает в дефолтной карточке товара и категорически не хочет в модалке? Предполагаю что не передали в модаль это: $this->request->get['path'] Но если есть main_category, то надо в контроллере перебирать. Типа такого: $this->load->model('catalog/product'); $product_info = $this->model_catalog_product->getProduct($product_id); if ($product_info) { if (!isset($this->request->get['path']) && !isset($this->request->get['manufacturer_id']) && !isset($this->request->get['search']) && !isset($this->request->get['tag'])) { $main_category = $this->model_catalog_product->getMainCategory($product_id); if ($main_category) { $this->request->get['path'] = $this->model_catalog_category->getCategoryPath($main_category); $path = ''; $parts = explode('_', (string)$this->request->get['path']); (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($main_category); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } } 1 Надіслати Поділитися на інших сайтах More sharing options... Padlik Опубліковано: 24 квітня 2020 Автор Share Опубліковано: 24 квітня 2020 @optimlab Благодарю Вас. С Вашей помощью осилил. В контроллер модуля товара для модального окна после if ($product_info) { if (!isset($this->request->get['path']) && !isset($this->request->get['manufacturer_id']) && !isset($this->request->get['search']) && !isset($this->request->get['tag'])) { $main_category = $this->model_catalog_product->getProductMainCategoryId($product_id); if ($main_category) { $this->request->get['path'] = $this->model_catalog_category->getCategoryPath($main_category); $path = ''; $parts = explode('_', (string)$this->request->get['path']); (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($main_category); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } } В модель product.php public function getProductMainCategoryId($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1' LIMIT 1"); return ($query->num_rows ? (int)$query->row['category_id'] : 0); } В модель category.php public function getCategoryPath($category_id){ $path = ''; $category = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c WHERE c.category_id = " .(int)($category_id)); if($category->row['parent_id'] != 0){ $path .= $this->getCategoryPath($category->row['parent_id']) . '_'; } $path .= $category->row['category_id']; return $path; } И вот живой пример того, где используются крошки https://sbermarket.ru/metro/voda-aqua-minerale-nieghazirovannaia-4 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар. Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: И вот живой пример того, где используются крошки https://sbermarket.ru/metro/voda-aqua-minerale-nieghazirovannaia-4 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар. Отлично! Да, кстати, мне понравилась идея с хлебными крошками. Сразу видно где ты, так как в некоторых категориях вообще ХК отсутствуют. Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: return ($query->num_rows ? (int)$query->row['category_id'] : 0); Хотел еще спросить, почему у вас это выражение ТРУ? У вас же лимит 1 и должна быть одна строка на выходе! Как так? У меня методы немного другие: public function getMainCategory($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1'"); if ($query->row) { return $query->row['category_id']; } else { return ''; } } public function getCategoryPath($category_id) { $query = $this->db->query("SELECT GROUP_CONCAT( path_id ORDER BY level SEPARATOR '_' ) AS path FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "'"); return $query->row['path']; } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Підтримка та відповіді на запитання. Допомога програмістам та розробникам Хлебные крошки в модальном окне
Padlik Опубліковано: 24 квітня 2020 Автор Share Опубліковано: 24 квітня 2020 @optimlab Благодарю Вас. С Вашей помощью осилил. В контроллер модуля товара для модального окна после if ($product_info) { if (!isset($this->request->get['path']) && !isset($this->request->get['manufacturer_id']) && !isset($this->request->get['search']) && !isset($this->request->get['tag'])) { $main_category = $this->model_catalog_product->getProductMainCategoryId($product_id); if ($main_category) { $this->request->get['path'] = $this->model_catalog_category->getCategoryPath($main_category); $path = ''; $parts = explode('_', (string)$this->request->get['path']); (int)array_pop($parts); foreach ($parts as $path_id) { if (!$path) { $path = (int)$path_id; } else { $path .= '_' . (int)$path_id; } $category_info = $this->model_catalog_category->getCategory($path_id); if ($category_info) { $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $path) ); } } // Set the last category breadcrumb $category_info = $this->model_catalog_category->getCategory($main_category); if ($category_info) { $url = ''; if (isset($this->request->get['sort'])) { $url .= '&sort=' . $this->request->get['sort']; } if (isset($this->request->get['order'])) { $url .= '&order=' . $this->request->get['order']; } if (isset($this->request->get['page'])) { $url .= '&page=' . $this->request->get['page']; } if (isset($this->request->get['limit'])) { $url .= '&limit=' . $this->request->get['limit']; } $data['breadcrumbs'][] = array( 'text' => $category_info['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . $url) ); } } } В модель product.php public function getProductMainCategoryId($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1' LIMIT 1"); return ($query->num_rows ? (int)$query->row['category_id'] : 0); } В модель category.php public function getCategoryPath($category_id){ $path = ''; $category = $this->db->query("SELECT * FROM " . DB_PREFIX . "category c WHERE c.category_id = " .(int)($category_id)); if($category->row['parent_id'] != 0){ $path .= $this->getCategoryPath($category->row['parent_id']) . '_'; } $path .= $category->row['category_id']; return $path; } И вот живой пример того, где используются крошки https://sbermarket.ru/metro/voda-aqua-minerale-nieghazirovannaia-4 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар. Надіслати Поділитися на інших сайтах More sharing options...
optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: И вот живой пример того, где используются крошки https://sbermarket.ru/metro/voda-aqua-minerale-nieghazirovannaia-4 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар. Отлично! Да, кстати, мне понравилась идея с хлебными крошками. Сразу видно где ты, так как в некоторых категориях вообще ХК отсутствуют. Надіслати Поділитися на інших сайтах More sharing options... optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: return ($query->num_rows ? (int)$query->row['category_id'] : 0); Хотел еще спросить, почему у вас это выражение ТРУ? У вас же лимит 1 и должна быть одна строка на выходе! Как так? У меня методы немного другие: public function getMainCategory($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1'"); if ($query->row) { return $query->row['category_id']; } else { return ''; } } public function getCategoryPath($category_id) { $query = $this->db->query("SELECT GROUP_CONCAT( path_id ORDER BY level SEPARATOR '_' ) AS path FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "'"); return $query->row['path']; } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
optimlab Опубліковано: 25 квітня 2020 Share Опубліковано: 25 квітня 2020 4 часа назад, Padlik сказал: return ($query->num_rows ? (int)$query->row['category_id'] : 0); Хотел еще спросить, почему у вас это выражение ТРУ? У вас же лимит 1 и должна быть одна строка на выходе! Как так? У меня методы немного другие: public function getMainCategory($product_id) { $query = $this->db->query("SELECT category_id FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "' AND main_category = '1'"); if ($query->row) { return $query->row['category_id']; } else { return ''; } } public function getCategoryPath($category_id) { $query = $this->db->query("SELECT GROUP_CONCAT( path_id ORDER BY level SEPARATOR '_' ) AS path FROM " . DB_PREFIX . "category_path WHERE category_id = '" . (int)$category_id . "'"); return $query->row['path']; } Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1
Recommended Posts