Jump to content
Sign in to follow this  
bezzubtsev

Opencart 1.5.4.1. - вывод в model последних товаров определенной категории

Recommended Posts

Добрый день!

 

Подскажите пожалуйста, что необходимо дописать, чтобы в модели вывода последних товаров по магазину был вывод последних товаров с учетом категории с определенным ID.

ID категории известен, и его не надо нигде прописывать в админке - достаточно указать тут в модели (главное - просто и работает).

 

В модуле и контроллере модуля уже дал запрос на getLatestCategory (сейчас - это просто копипаста getLatestProducts). Сейчас показывает последние товары, как обычно.

 

Понимаю, что дописывать нужно тут, но синтаксисом не так сильно владею:

catalog/model/catalog/product.php

 

public function getLatestCategory($limit) {
        if ($this->customer->isLogged()) {
            $customer_group_id = $this->customer->getCustomerGroupId();
        } else {
            $customer_group_id = $this->config->get('config_customer_group_id');
        }    
                
        $product_data = $this->cache->get('product.latest.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . $customer_group_id . '.' . (int)$limit);
// чуйка тянет дописать после config_store_id по аналогии фильтр по ID категории, но проводимые попытки вызывали только ошибки.

        if (!$product_data) {
            $query = $this->db->query("SELECT p.product_id FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' ORDER BY p.date_added DESC LIMIT " . (int)$limit);
// Тут тоже прописывал AND перед ORDER BY и по аналогии и пытался сделать выборку по ID категории. Ничего толкового из этого не вышло :(


            // вырванные куски, где тоже идет вывод товаров категории.
            // $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "product_to_category WHERE product_id = '" . (int)$product_id . "'");
                //    $sql .= " AND p2c.category_id = '" . (int)$data['filter_category_id'] . "'";
 

Прикреплен файл. Кусок, о котором идет речь - 317 строка.

 

Заранее большое спасибо!

product.php

Share this post


Link to post
Share on other sites

UDP: в контроллере модуля идет как обычно запрос на модель:

 

$bestseller_results = $this->model_catalog_product->getLatestCategory($setting['limit']);

 

Если в модели прописать категорию (код смотрите выше, выделено зеленым что добавил):

 

        $product_data = $this->cache->get('product.latest.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . $category_id = '75' . '.' . $customer_group_id . '.' . (int)$limit);

 

.., выходит ответ ошибки VQMODa про парсер:

 

Parse error: syntax error, unexpected $end in /*путь*/vqmod/vqcache/vq2-catalog_model_catalog_product.php on line 174

 

 

174 строка в кэшовом файле - это последняя строка PHP файла (пустая).

Share this post


Link to post
Share on other sites

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

 

$product_data = $this->cache->get('product.latest.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . $category_id('75') . '.' . $customer_group_id . '.' . (int)$limit);

 

И получаю уже другие ответы от системы:

 

Notice: Undefined variable: category_id in /*путь*/vqmod/vqcache/vq2-catalog_model_catalog_product.php on line 367
Fatal error: Function name must be a string in /*путь*/vqmod/vqcache/vq2-catalog_model_catalog_product.php on line 367

 

Открыл файл кэша, строку 367 (выделил синим):

 

public function getProducts($data = array()) {
        if ($data) {
            $sql = "SELECT * FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id)";
            
            if (!empty($data['filter_category_id'])) {
                $sql .= " LEFT JOIN " . DB_PREFIX . "product_to_category p2c ON (p.product_id = p2c.product_id)";            
            } .....

Share this post


Link to post
Share on other sites

Никак не могу самостоятельно решить вопрос :(

 

Уже нашел расписанный запрос к базе данных в одной из найденных тем https://opencartforum.com/topic/2103-%d0%ba%d0%b0%d0%ba-%d1%81%d0%be%d1%81%d1%82%d0%b0%d0%b2%d0%b8%d1%82%d1%8c-mysql-%d0%b7%d0%b0%d0%bf%d1%80%d0%be%d1%81-%d0%b4%d0%bb%d1%8f-%d0%b2%d1%8b%d0%b1%d0%be%d1%80%d0%b0/page__view__findpost__p__12790

 

Но прикрутить не удалось, так как все это дело (модуль) отображается не в категориях, а на главной странице.

По сути сейчас:

» модуль - работает, товары показывает последние, но просто со всех категорий.

» контроллер модуля - посылает свой запрос в модель на предмет показа товаров.

Осталось дело за тем, чтобы прописать в catalog/model/catalog/product.php вызов нужной функции.

Share this post


Link to post
Share on other sites

Скажите пожалуйста, правильный ли это вообще подход - просить на уровне модели дать сортировку категории? Может надо править код в другом месте?

Share this post


Link to post
Share on other sites

конечно в модели все делается.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Similar Content

    • By buslikdrev
      Изображение из товара в категорию / Image from product to category
      Скачать/Купить дополнение Название модуля: Изображение из товара в категорию - "Image from product to category"
      Версия модуля: 1.1
      Тип лицензии: Full (полная версия)
      Тип установки: ocmod
      Язык: Беларуская мова, English, Русский язык, Українська мова
      Дата создания: 15.10.2017
      Дата обновления: 15.02.2017
      Был протестирован на: OpenCart.pro 2.1.0.2.2 и 2.3.0.2.5, OpenCart-"Русская сборка" 2.1.0.2 (rs1), 2.3.0.2 (rs6) и 3.0.2.0 (rs3), ocStore 1.5.4.1.2, 2.1.0.2.1 и 2.3.0.2.3 - шаблон (default)
      Название архива 1: Image from product to category v1.0 Full OpenCart 2.X.ocmod.zip
      Название архива 2: Image from product to category v1.1 Full OpenCart 2.X-3.0.X.ocmod.zip

      ДЕМОНСТРАЦИЯ:


      ОПИСАНИЕ
      Вам надоело вручную выбирать изображение для каждой категории? Вы устали? Тогда этот модификатор то, что нужно Вам!
      С помощью этого модуля (модификатора) Вы сможете с лёгкостью установить изображения на все категории, где есть товар!
      А именно, на странице категорий и при редактировании категории появится волшебная кнопка, которая скопирует фотографию из товара.
      Как это работает? Всё очень просто! Если вы находитесь на странице категорий, то можете просто нажать на кнопку, тогда будут заполнены фотографии тех категорий, в которых есть товар или подкатегория с товаром. А если вы не хотите заменять фотографии всех категорий, то просто выделите нужные категории, но помните, что если в категории нету товара и подкатегории с изображением, тогда фотографии не будет, пока не скопируете из товара в подкатегорию. Когда вы находитесь на странице редактирования категории, кнопка работает также, как и при выделении, только выделять ненужно ничего.

      ВНИМАНИЕ!
      Сделайте бэкап базы данных!
      Конкретнее: oc_category
      Оригинальные файлы магазина не заменяет!

      Модификатор "вносит изменения" в следующие файлы:
       

      УСЛОВИЯ СОГЛАШЕНИЯ
      - Beta версии устанавливаете на свой страх и риск - бэкап базы данных (далее - БД) обязателен;
      - Модуль (модификатор, дополнение, расширение, приложение) (далее - Модуль) можно устанавливать на 1 домен включая поддомены (одна покупка - один домен);
      - Редактировать код можно только под нужды своего магазина;
      - Распространение модуля запрещено;
      - Техническая поддержка (далее - ТП) осуществляется только при появлении ошибки, бага, глюка (зависания) и не совместимости модуля с заявленными версиями Opencart и шаблонов на момент продажи, при установке на боевой сайт (рабочий хостинг);
      - Адаптация модуля под другую версию Опенкарта, нестандартный шаблон и сторонние модули - платная;
      - Автор модуля оставляет за собой право в любое время внести изменение в настоящее условие, описание и исходный код модуля;
      - Автор модуля оставляет за собой право прекратить ТП пользователям по истечению 365 календарных дней со дня последнего обновления модуля (Full или Beta версии), или со дня окончания продления ТП, или при форс-мажорных обстоятельств;
      - ТП осуществляется при условии соблюдения данного соглашения, пишите в личные сообщения.
      Добавил buslikdrev Добавлено 22.11.2017 Категория Инструменты, утилиты Системные требования Сайт разработчика http://buslikdrev.by/ Метод активации По запросу на почту Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0
      1.5.6.4
      1.5.6.3
      1.5.6.2
      1.5.6.1
      1.5.6
      1.5.5.1
      1.5.5
      1.5.4.1
      1.5.3.1 ocStore 3.0
      2.3
      2.2
      2.1
      1.5.5.1.2
      1.5.5.1.1
      1.5.5.1
      1.5.4.1.2
      1.5.4.1.1
      1.5.4.1
      1.5.3.1
      1.5.2.1
      1.5.1.3 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х
      OcShop 1.5.6.4.х Обращение к серверу разработчика Нет
      Да Старая цена  
    • By vetalkurilenko
      Добрый день.
      Недавно на сайте появилась проблема. Перестало корректно работать отображение товаров в категории. 
      https://molli.com.ua/igrushki/dekorativnye/
      Не могу понять в чем причина. 
      OPencart 3.0, шаблон Debaco. Помогите найти решение, в какую сторону смотреть ?

    • By nikifalex
      1 950.00 руб
      Скачать/Купить дополнение


      Модуль автокатегорий
      Модуль позволяет автоматически добавить в категорию товары, подходящие под условия.
      Модуль не создает категории сам. Категории вы создаете сами, с нужными тегами, иерархией, как угодно.
      Поэтому в результате можно создать произвольную гибкую структуру категорий.
      ну а модуль просто добавит товары в эти категории по определенным критериям. Автоматически.
       
      Для добавления товаров в категорию можно использовать неограниченное количество фильтров,
      каждый из которых может включать
      - название и значение (либо диапазон значений) атрибута.
      - диапазон цены
      - учитывать акции товара - либо все, либо только с акцией, либо только без акции
      - производитель
      - наличие подстроки в названии товара
      - категория
      в категорию добавляются товары, целиком подходящие под все фильтры.
      Обрабатывать можно как отдельную одну категорию, так и все категории сразу.
      Все товары, которые не подходят, удаляются из этой категории.
      Модуль позволяет делать страницы-категории в которых будут тематические группы товаров.
      например:
      1) женская одежда на осень больших размеров
      2) кухонные принадлежности tefal с ценой меньше 2000 руб по распродаже
      3) автомобильные шины шириной от 195 до 225, профилем от 55 до 60 и диаметром 16

      Поскольку это обычная категория, у этой страницы  могут быть все SEO теги, описание, SEO URL, на странице может работать фильтр
      и любые другие модули.
      Что очень хорошо подходит для SEO продвижения и лендингов.
      Также такие категории можно ставить внутрь категорий, в меню, в тематические подборки, что улучшает навигацию по сайту
      и помогает пользователю сразу перейти в нужные товары. Ссылки на эти категории можно ставить на баннеры, слайдеры и
      прочие рекламные материалы.

      установка:
      1) загрузить файл nkf_autocategory_oc23_1_1.ocmod.zip через установку расширений в админке.
      2) обновить модификаторы
      3) активировать модуль в расширения-модули
      4) зайти в модуль и поставить статус "включено"
      Теперь в категории можно указать параметры для выбора товаров. И потом перейти в модуль и в модуле нажать "запустить"
      Модуль работает на opencart 2.3, ocstore 2.3, ocshop 2.3 Модуль не затирает системные файлы. Язык модуля - Русский. 
       
      после обновления зайдите в настройки модуля

      Политика безусловного возврата: В течение недели после покупки вы можете запросить полный возврат денег за покупку, если вы не удовлетворены качеством модуля. Все что надо это написать в личку, указать причину и реквизиты для перевода.
      Добавил nikifalex Добавлено 23.03.2019 Категория Прочее Системные требования Сайт разработчика Метод активации Автоматическая активация Ioncube Loader Нет OpenCart 2.3 ocStore 2.3 OpenCart.Pro, ocShop Opencart.pro 2.3 Обращение к серверу разработчика Нет Старая цена 0  
    • By nikifalex
      Модуль позволяет автоматически добавить в категорию товары, подходящие под условия.
      Модуль не создает категории сам. Категории вы создаете сами, с нужными тегами, иерархией, как угодно.
      Поэтому в результате можно создать произвольную гибкую структуру категорий.
      ну а модуль просто добавит товары в эти категории по определенным критериям. Автоматически.
       
      Для добавления товаров в категорию можно использовать неограниченное количество фильтров,
      каждый из которых может включать
      - название и значение (либо диапазон значений) атрибута.
      - диапазон цены
      - учитывать акции товара - либо все, либо только с акцией, либо только без акции
      - производитель
      - наличие подстроки в названии товара
      - категория
      в категорию добавляются товары, целиком подходящие под все фильтры.
      Обрабатывать можно как отдельную одну категорию, так и все категории сразу.
      Все товары, которые не подходят, удаляются из этой категории.
      Модуль позволяет делать страницы-категории в которых будут тематические группы товаров.
      например:
      1) женская одежда на осень больших размеров
      2) кухонные принадлежности tefal с ценой меньше 2000 руб по распродаже
      3) автомобильные шины шириной от 195 до 225, профилем от 55 до 60 и диаметром 16

      Поскольку это обычная категория, у этой страницы  могут быть все SEO теги, описание, SEO URL, на странице может работать фильтр
      и любые другие модули.
      Что очень хорошо подходит для SEO продвижения и лендингов.
      Также такие категории можно ставить внутрь категорий, в меню, в тематические подборки, что улучшает навигацию по сайту
      и помогает пользователю сразу перейти в нужные товары. Ссылки на эти категории можно ставить на баннеры, слайдеры и
      прочие рекламные материалы.

      установка:
      1) загрузить файл nkf_autocategory_oc23_1_1.ocmod.zip через установку расширений в админке.
      2) обновить модификаторы
      3) активировать модуль в расширения-модули
      4) зайти в модуль и поставить статус "включено"
      Теперь в категории можно указать параметры для выбора товаров. И потом перейти в модуль и в модуле нажать "запустить"
      Модуль работает на opencart 2.3, ocstore 2.3, ocshop 2.3 Модуль не затирает системные файлы. Язык модуля - Русский. 
       
      после обновления зайдите в настройки модуля

      Политика безусловного возврата: В течение недели после покупки вы можете запросить полный возврат денег за покупку, если вы не удовлетворены качеством модуля. Все что надо это написать в личку, указать причину и реквизиты для перевода.
    • By legioner26
      499.00 руб
      Скачать/Купить дополнение


      Многофункциональный модуль меню Категорий
      Разработан многофункциональный модификатор меню категорий товаров, который позволяет прям из админ панели решать массу задач без участия программиста. Очень простая и легкая установка.
      Так же внедрена мобильная версия модуля.
      Модификатор создан для изменения и добавления функционала в стандартный модуль категорий всех версий веток ОС начиная от 2.0 и заканчивая 3.0
      Обновление модификатора до версии ОС 3.0
      ПРИМЕЧАНИЕ !!!
      Для корректной установки и работы модификатора настоятельно рекомендую проверить были ли изменены файлы стандартного модуля категорий, 
      либо удостовериться что нет сторонних модификаторов которые бы меняли функционал.
      В случае если файлы изменены, можете добавить к ним префикс к примеру (category_1.tpl) и залить файлы из коробки ОС. 
       
       
       
       
      Установка:
      1. Папку Admin закинуть на хостинг в корень сайта 
      2. Устанавливаете модификатор согласно вашей версии ОС через "Установка расширений", далее в модификаторах чистим кешь и обновляем.
      ИНСТРУКЦИЯ во вложении
      DEMO Логин: demo Пароль: demo
      https://siacosmetics.ru/lico1/dlya-lica/krem-dlya-lica  - С вертикальным выпадом
      https://teplomir77.ru - С горизонтальным выпадом
       
      https://opencartforum.com/profile/723002-legioner26/?tab=field_core_pfield_13 ->> Собственный программный модуль по парсингу товаров под управлением OpenCart
      Добавил legioner26 Добавлено 12.02.2018 Категория Меню, дизайн, внешний вид Системные требования Сайт разработчика Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1
      2.0 ocStore 3.0
      2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1
      OcShop 2.0.3.х Обращение к серверу разработчика Нет Старая цена 850  
  • Recently Browsing   0 members

    No registered users viewing this page.

×

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.