Не совсем понятна ваш замечание про макет...
А если товаров у вас не много, то как правильно сослался на очень старый топик
alexander.egorov, вам нужно выбрать все товары (если суммарно их там не много и у них не очень много доп.свойств) из группы
Цитата:
1. кухи
и ее подгрупп.
Затем останется в XSL выбрать в каждой подгруппе не более 5 единиц товара
Это
первый способ.
2-й способ (когда товаров оч. много) выполнить запрос:
SELECT shop_items.*
FROM shop_items
INNER JOIN (
SELECT shop_group_id, GROUP_CONCAT(id ORDER BY id DESC) items_in_group_ids
FROM shop_items
WHERE modification_id = 0
AND shortcut_id = 0
AND deleted = 0
AND active = 1
GROUP BY shop_group_id
) all_items_in_group
ON shop_items.shop_group_id = all_items_in_group.shop_group_id
AND FIND_IN_SET(shop_items.id, items_in_group_ids) <= 5
WHERE modification_id = 0
AND shortcut_id = 0
AND deleted = 0
AND active = 1
ORDER BY
shop_items.shop_group_id, shop_items.id DESC;
выбрав не более 5-ти записей в каждой группе
Здесь надо смотреть на текущий и потенциальный будущий ассортимент товаров. По-хорошему, нужно провести стрессовое тестирование на максимально возможном для данного магазина количестве товаров и узнать время выполнения запроса.
Далее останется простой вывод в XSL-е
3-й способ - это модификация первого (т.е. модификация стандартного контроллера показа) - узнать все подгруппы в данной группе, а затем в цикле для каждой подгруппы выполнить обычный SELECT по id данной подгруппы и добавить найденные элементы в контроллер. Ну и в конце вывод через XSL как во 2-м случае.
Как-то так