Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Sign Up

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

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 файла (пустая).

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)";            
            } .....

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 вызов нужной функции.

Link to post
Share on other sites

  • 2 weeks later...

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

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Similar Content

    • By Sha
      999 12
      Скачать/Купить дополнение


      MULTIEDIT - Пакетное редактирование товаров
      MULTIEDIT - пакетное редактирование товаров (Opencart 2.3)
       
      Multiedit - предназначен для группового редактирования различных параметров и опций товаров. Модуль позволяет быстро отредактировать все возможные стандартные атрибуты, описания, и другие свойства выбранных продуктов без необходимости индивидуального входа в карточку товара.  Это могут быть продукты выбранные из общего списка или все товарные единицы из одной либо нескольких категорий и производителей. Модуль повторяет внешний вид и расположение всех редактируемых полей как при обычном изменении товара, но изменения вносятся не в один, а во все выбранные изделия. Таким образом данное дополнение значительно облегчит процесс редакции данных и позволит сэкономить много времени.
      Данный модуль это надёжный инструмент и хороший помощник в редактировании товаров и наполнении интернет магазина.
       
      С помощью модуля можно массово:
      Редактировать названия, описания, мета теги;  
      Редактировать созданные опции, атрибуты к выбранным товарам
      Менять принадлежность к категории и производителю;
      Управлять фильтрами;
      Добавлять файлы к выбранным товарам (видео, инструкции и тд);
      Управлять скидками и акциями;
      Настраивать бонусные баллы;
      Редактировать изображения;
      Настраивать ЧПУ;
      Назначать регулярные платежи;
      Указывать сопутствующие и рекомендуемые товары;
      массово изменять цены
      и другое... (детальнее смотреть демо)
       
      ДЕМО (список товаров)
      ДЕМО (редактирование выбранных товаров)
      ДЕМО (редактирование всех товаров выбранной категории)
      ДЕМО (редактирование всех товаров выбранного производителя)
      Логин: zekit Пароль: zekit
       
      А так-же обратите внимание на важные преимущества модуля
      Имеет открытый исходный код. Отсутствует привязка к сторонним серверам. Легко поддерживается любым разработчиком, отсутствует обфускация кодировка ionCube!  
      Версии CMS
      Модуль тестировался и работает на OpenCart 2.3.x.x  
      Локализация
      Русский English  
      Установка и обновление модуля
      С помощью стандартного функционала OpenCart. 
      Подробная инструкция в файле readme.pdf
       
      Лицензия
      Данный модуль реализуется по принципу: одна лицензия на один домен. Вы не можете распространять, передавать или иным образом предоставлять третьим лицам право на использование данного продукта.  
      Гарантии и обязательства
      Разработчик не гарантирует отсутствие ошибок или корректной работы дополнения если: 
      В код сайта внесено много изменений; На сайте установлены конфликтующие между собой компоненты; Приобретаемое дополнение не совместимо с Вашей версией CMS. Во избежание потери данных перед установкой, рекомендуем делать backup файлов и базы данных!
       
      Техническая поддержка
      Техническая поддержка доступна пользователям из списка покупателей модуля и только после прочтения FAQ!.
      Обращаясь с просьбой разобраться в проблеме, предоставьте:
      Адрес сайта; Доступ в админ-панель; Доступ на FTP-сервер. По вопросам технической поддержки или консультаций, Вы можете связаться с нами через: 
      Личные сообщения на форуме; Тема поддержки Multiedit.  
      Режим работы с 10-00 до 18-00 по киевскому времени за исключением выходных и праздничных дней. 
       
      Добавил Sha Добавлено 16.03.2017 Категория Редакторы Системные требования php 5.6 и выше Метод активации Без активации Ioncube Loader Нет OpenCart 2.3
      2.2
      2.1 ocStore 2.3.0.2.4
      2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1 Обращение к серверу разработчика Нет  
    • By Sha
      MULTIEDIT - пакетное редактирование товаров (Opencart 2.3)
       
      Скидки на "чёрную пятницу" с 25 ноября, 2021 – по 30 ноября, 2021. Купон 678008-black
       
      Multiedit - предназначен для группового редактирования различных параметров и опций товаров. Модуль позволяет быстро отредактировать все возможные стандартные атрибуты, описания, и другие свойства выбранных продуктов без необходимости индивидуального входа в карточку товара.  Это могут быть продукты выбранные из общего списка или все товарные единицы из одной либо нескольких категорий и производителей. Модуль повторяет внешний вид и расположение всех редактируемых полей как при обычном изменении товара, но изменения вносятся не в один, а во все выбранные изделия. Таким образом данное дополнение значительно облегчит процесс редакции данных и позволит сэкономить много времени.
      Данный модуль это надёжный инструмент и хороший помощник в редактировании товаров и наполнении интернет магазина.
       
      С помощью модуля можно массово:
      Редактировать названия, описания, мета теги;  
      Редактировать созданные опции, атрибуты к выбранным товарам
      Менять принадлежность к категории и производителю;
      Управлять фильтрами;
      Добавлять файлы к выбранным товарам (видео, инструкции и тд);
      Управлять скидками и акциями;
      Настраивать бонусные баллы;
      Редактировать изображения;
      Настраивать ЧПУ;
      Назначать регулярные платежи;
      Указывать сопутствующие и рекомендуемые товары;
      массово изменять цены
      и другое... (детальнее смотреть демо)
       
      ДЕМО (список товаров)
      ДЕМО (редактирование выбранных товаров)
      ДЕМО (редактирование всех товаров выбранной категории)
      ДЕМО (редактирование всех товаров выбранного производителя)
      Логин: zekit Пароль: zekit
       
      А так-же обратите внимание на важные преимущества модуля
      Имеет открытый исходный код. Отсутствует привязка к сторонним серверам. Легко поддерживается любым разработчиком, отсутствует обфускация кодировка ionCube!  
      Версии CMS
      Модуль тестировался и работает на OpenCart 2.3.x.x  
      Локализация
      Русский English  
      Установка и обновление модуля
      С помощью стандартного функционала OpenCart. 
      Подробная инструкция в файле readme.pdf
       
      Лицензия
      Данный модуль реализуется по принципу: одна лицензия на один домен. Вы не можете распространять, передавать или иным образом предоставлять третьим лицам право на использование данного продукта.  
      Гарантии и обязательства
      Разработчик не гарантирует отсутствие ошибок или корректной работы дополнения если: 
      В код сайта внесено много изменений; На сайте установлены конфликтующие между собой компоненты; Приобретаемое дополнение не совместимо с Вашей версией CMS. Во избежание потери данных перед установкой, рекомендуем делать backup файлов и базы данных!
       
      Техническая поддержка
      Техническая поддержка доступна пользователям из списка покупателей модуля и только после прочтения FAQ!.
      Обращаясь с просьбой разобраться в проблеме, предоставьте:
      Адрес сайта; Доступ в админ-панель; Доступ на FTP-сервер. По вопросам технической поддержки или консультаций, Вы можете связаться с нами через: 
      Личные сообщения на форуме; Тема поддержки Multiedit.  
      Режим работы с 10-00 до 18-00 по киевскому времени за исключением выходных и праздничных дней. 
       
    • By DenKuzmin
      Добавил вывод опций в каталог. Вывожу их вот так:
       
       
      В контроллере добавил:
      $options = $this->model_catalog_product->getProductOptions($result['product_id']);  
      И в контроллере в $data['products'][] = array(
      добавил:
      'options' => $options,  
      Проблем в том, что при переходе в категорию жёстко долго грузится страница. Может минуту висеть. В чём проблема? Помогите.
    • By legioner26
      777
      Скачать/Купить дополнение


      Модификатор автозаполнения картинок категорий
      Разработан модификатор автозаполнения картинок категорий из первой найденной картинки товара категории, а так же проставляются картинки для главных категорий и под категорий
      версии OpenCart 2.0, 2.1, 2.2, 2.3, 3.x  
      Просто заливаете товары с картинками, а картинки на категории проставятся сами.
      Устанавливаете модификатор как указано на картинке, чистим в модификациях кеш и обновляем. 
       
      Иногда бывает когда некорректно удалены картинки, и они сохранены в базе Для этого надо зайти через phpmyadmin и удалить из полей картинки из таблица oc_category
      UPDATE `oc_category` SET image=''
      http://prntscr.com/rkmuy3
      Введете этот запрос для очистки всех изображений категорий в случае проблем.
       
      РЕКОМЕНДУЕМЫЕ МОДУЛИ
       
      Смс авторизация и регистрация 
      Генератор АКЦИЙ Special PRO
      Конструктор форм обратной связи
      Модуль Зумма
      Модуль подарков
      СЕО генератор мета тегов
       
      Добавил legioner26 Добавлено 31.08.2017 Категория Модули Системные требования Метод активации Без активации 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 Обращение к серверу разработчика Нет  
    • By legioner26
      Разработан модификатор автозаполнения картинок категорий из первой найденной картинки товара категории, а так же проставляются картинки для главных категорий и под категорий
      версии OpenCart 2.0, 2.1, 2.2, 2.3, 3.x  
      Просто заливаете товары с картинками, а картинки на категории проставятся сами.
      Устанавливаете модификатор как указано на картинке, чистим в модификациях кеш и обновляем. 
       
      Иногда бывает когда некорректно удалены картинки, и они сохранены в базе Для этого надо зайти через phpmyadmin и удалить из полей картинки из таблица oc_category
      UPDATE `oc_category` SET image=''
      http://prntscr.com/rkmuy3
      Введете этот запрос для очистки всех изображений категорий в случае проблем.
       
      РЕКОМЕНДУЕМЫЕ МОДУЛИ
       
      Смс авторизация и регистрация 
      Генератор АКЦИЙ Special PRO
      Конструктор форм обратной связи
      Модуль Зумма
      Модуль подарков
      СЕО генератор мета тегов
       
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

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.