Вывод самого дешевого товара из каждой категории

Тема в разделе "Общие вопросы", создана пользователем dofus, 24 апр 2024.

  1. dofus

    dofus Пользователь

    Сообщения:
    90
    Симпатии:
    1
    Друзья, всем привет!
    Появилась задачка, над которой ломаю мозг уже второй день и все никак(

    Как можно вывести в модуль, например "Рекомендуемое" по одному самому дешевому товару из каждой категории

    Так как категорий сотни, а товаров тысячи. Вариант "вручную" отметается сразу)
     
  2. Ravilr

    Ravilr Специалист

    Сообщения:
    4.223
    Симпатии:
    1.452
    Лучше конечно создать отдельный модуль, но можно конечно написать запрос для модуля рекомендуемых. По другому наверно никак.
     
    dofus нравится это.
  3. dofus

    dofus Пользователь

    Сообщения:
    90
    Симпатии:
    1
    Смысл в том, что это разовая задачка и писать под это модуль кажется избыточным, а вот с запросом так и не смог, даже gpt не справился) Поэтому и обратился сюда
     
  4. Ravilr

    Ravilr Специалист

    Сообщения:
    4.223
    Симпатии:
    1.452
    Ну давайте решим вместе тогда :) Что уже сделали?

    1. Запрос который получит самый дешевый товар из указанной категории.
    Код:
    SELECT p.product_id, p.price
    FROM oc_product p
    LEFT JOIN oc_product_to_category p2c ON p.product_id = p2c.product_id
    WHERE p2c.category_id = 20
    ORDER BY p.price ASC
    LIMIT 1
    2. Затем запрос который получит просто все id категорий.
    3. Потом в цикле массива id категорий используем запрос из пункта 1.
    4. В итоге получим данные id товаров с самой низкой ценой из каждой категории.
    5. Ну и та также в цикле получаем по id информацию о товаре и выводим его, как делают это другие модули.

    т.е все что выше, нужно вставить вместо
    PHP:
    $products array_slice($setting['product'], 0, (int)$setting['limit']);
    При этом не забыть создать модельку для запросов и подключить ее в модуле рекомендуемых.
     
    Последнее редактирование: 25 апр 2024
  5. Tom

    Tom Специалист

    Сообщения:
    1.051
    Симпатии:
    386
    Довольно странно это делать через Рекомендуемые. С учётом того, что это единственный модуль , который как раз руками и наполняется. А вроде ТС противник этого

    Если конечно этот модуль не должен выводиться на главной например, а в категориях то можно прикрутить тот же модуль самого опенкарт Новинки (Последние). Ravil уже всё по сути расписал. А так как Новинки это и есть по сути весь товар магазина по мере его добавления , остается сделать нужную выборку .
    Добавить в модуль проверку на категорию в которой находится и там же выборку по минимальной цене дописать. Как то так...