Jump to content

Padlik

Пользователи
  • Content Count

    88
  • Joined

  • Last visited

Community Reputation

1 Обычный

About Padlik

  • Rank
    Пользователь

Recent Profile Visitors

2,028 profile views
  1. Для страницы товара по аналогии: Контроллер: $data['cart_count'] = 0; foreach ($this->cart->getProducts() as $product2) { if ($product2['product_id'] == (int)$this->request->get['product_id']) { $data['cart_count'] = $product2['quantity']; } } Шаблон: <?php echo $cart_count; ?>
  2. Благодарю Вас, помогли! Решение для получения текущее количество товара в из корзины на примере категорий: В контроллер перед $data['products'][] = array( $cart_count = 0; foreach ($this->cart->getProducts() as $product2) { if ($product2['product_id'] == $result['product_id']) { $cart_count = $product2['quantity']; } } В массив $data['products'][] = array( 'product_id' => $result['product_id'], 'thumb' => $image, 'name' => $result['name'], 'cart_count' => $cart_count, ............ В шаблоне <?php echo $product['cart_count']; ?> ------------------------------------------------------------------------------------------
  3. Всем привет. Задача - показывать количество определенного товара по id из корзины на страницах категорий, модулей, товара. На примере категорий делаю: Перед $data['products'][] = array( Добавляю: $products = $this->cart->getProducts(); foreach ($products as $product) { if ($product['product_id'] == $result['product_id']) { $cart_count = $product['quantity']; } } В массив $data['products'][] = array( 'cart_count' = cart_count, ..... В шаблоне product['cart_count'] - вывод количества конкретного товара работает криво. В корзине 2 товара. У одного количество 1, у другого 2. На странице категории у обоих товаров показывается количество 2, а у всех остальных не в корзине - количество 1. Подскажите, чего не так сделал?
  4. Тоже самое было в моем предыдущем посте, пришло один дубль изменить)
  5. Мой косяк, все работает))) У меня в модуле несколько однотипных блоков с выводом,в зависимости от медиа-запросов. Так вот, пихал $category['special_count'] в один из блоков, который в стилях скрыт... В общем все ок, еще раз всем спасибо!
  6. Я пытаюсь получить массив товаров из категорий и подкатегорий, чтобы вытащить товары со скидочной ценой. Массив товаров получаю в контроллере модуля категорий, вывод в шаблоне модуля категорий. Кэш модификаторов чистил. Системный тоже. Не помогает. print_r( $special_count ) - получаю правильный подсчет, но, я так понимаю, что $special_count к самим категориям не привязывается. По крайней мере вызов в шаблоне не работает.
  7. print_r($categories) на выходе Array ( [category_id] => 102 [image] => catalog/theme/image.png [parent_id] => 0 [top] => 0 [column] => 1 [sort_order] => 0 [status] => 1 [date_added] => 2020-02-22 23:11:35 [date_modified] => 2020-04-20 19:51:58 [language_id] => 1
  8. print_r($subproducts) нормально выводит массивы товаров со special, но определение переменной $category['special_count'] не работает.
  9. Да, я уже было полез в файл модели, но почему-то решил, что проще в контроллере сделать подсчет.
  10. Еще вопрос возник, раз уж тут речь я завел про получение акционных товаров в категориях. Подскажите, что делаю не так: $data['categories'] = array(); $categories = $this->model_catalog_category->getCategories(0); foreach ($categories as $category) { $children_data = array(); if ($category['image']) { $image = $this->model_tool_image->resize($category['image'], $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height')); } else { $image = $this->model_tool_image->resize('placeholder.png', $this->config->get($this->config->get('config_theme') . '_image_product_width'), $this->config->get($this->config->get('config_theme') . '_image_product_height')); } $children = $this->model_catalog_category->getCategories($category['category_id']); foreach($children as $child) { $filter_data = array('filter_category_id' => $child['category_id'], 'filter_sub_category' => true); $children_data[] = array( 'category_id' => $child['category_id'], 'name' => $child['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'href' => $this->url->link('product/category', 'path=' . $category['category_id'] . '_' . $child['category_id']) ); } $filter_data = array( 'filter_category_id' => $category['category_id'], 'filter_sub_category' => true ); $subproducts = array(); $productresults = $this->model_catalog_product->getProducts($filter_data); $products_total = $this->model_catalog_product->getTotalProducts($filter_data); foreach ($productresults as $productresult) { if ((float)$productresult['special']) { $special = $this->currency->format($this->tax->calculate($productresult['special'], $productresult['tax_class_id'], $this->config->get('config_tax')), $this->session->data['currency']); } else { $special = false; } $subproducts[] = array( 'special' => $special ); } $specials = array_filter($subproducts,function($k){ return $k['special']; }); $special_count = count($specials); $data['categories'][] = array( 'category_id' => $category['category_id'], 'name' => $category['name'] . ($this->config->get('config_product_count') ? ' (' . $this->model_catalog_product->getTotalProducts($filter_data) . ')' : ''), 'children' => $children_data, 'special_count' => $special_count, 'thumb' => $image, 'href' => $this->url->link('product/category', 'path=' . $category['category_id']) ); } Пытаюсь получить массив товаров из категорий, чтобы вывести количество товаров со скидкой в модуле категорий. Вывод в tpl <?php echo $category['special_count']; ?> - не работает. При этом и ошибок на фронте нет.
  11. Всем привет. Задача вывести рядом с названием категории в списке категорий количество товаров со скидкой. Получаю массив категорий: $data['categories'][] = array( 'products' => $products, 'textname' => $result['name'], 'totally' => $products_total .' '. $this->getWords($products_total), 'category_id' => $result['category_id'], 'name' => $result['name'], 'href' => $this->url->link('product/category', 'path=' . $this->request->get['path'] . '_' . $result['category_id'] . $url) ); Подскажите, пожалуйста, как добавить в массив категорий подсчет количества товара с не пустым значением special Добавляю в массив категорий 'totallsp' => count(isset($products['special'])), Не работает. Ради эксперимента делаю: 'totallsp' => count($products), - на выходе для каждой категории получаю количество товаров в ней - т.е. в целом такая конструкция работает. Но не пойму, как сделать выборку именно по ключу special с не пустым значением. Прошу подсказать. Спасибо!
  12. Всем привет. Подскажите, пожалуйста, как сохранить в сессию определенный метод доставки до загрузки итогов? Проблема следующая. В шапке я показываю итоговую стоимость товаров с доставкой. Для доставки работают два метода - flat и free. Второй срабатывает при достижении сумму заказа в корзине больше заданной. На сайте работает симпла, в настройках указано выбрать первый метод доставки автоматом. Именно на странице корзины итоги считаются правильно. Теперь к шапке. Суть проблемы такова, что при добавлении товара в корзину в шапке отображается Итог без учета доставки. ОДНАКО. Если изменить количество товара в шапочной корзине, то итоги начинают показываться уже с учетом доставки, хотя способ доставки я не выбирал. Более того, если в шапке изменить количество товара, чтобы сумма была больше заданной в бесплатной доставки - то в Итогах показывается бесплатная доставка. Иными словами, итоги при использовании в корзине update (edit) или remove - показываются и работают как надо. А вот при использовании функции add - никак. Может кто-то объяснить, в чем прикол? В контроллере checkout/cart во всех функциях, add, edit, remove присутствует сброс unset($this->session->data['shipping_method']); unset($this->session->data['shipping_methods']); При этом я не могу понять, почему итоги работают без выбора метода доставки при изменении количества товаров в корзине. В контроллере доставки flat.php if ($this->cart->getSubTotal() >= $this->config->get('free_total')) { $status = false;} - для получения бесплатной доставки от суммы. Прошу помочь.
  13. @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 В чем ирония на счет их использования в модальном окне, мне, наверное, не понять. Минусов в их наличии нет, а плюс в том, что не закрывая модальное окно можно переходить в любой из разделов, к которому прикручен товар.
  14. Мне тоже смысл не понятен, но заказчику нарисовали такой дизайн. Ориентировались на один крупный магазин. Задумка, полагаю, в том, чтобы быстро перейти, к примеру, в родительскую категорию, если уровень вложенности категорий больше 3-х, к примеру.
×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.