|
|
12.11.2012, 18:13
|
|
sparton
Шекера Евгений
Зарегистрирован: 2010-03-16
Сообщений: 141
|
Никто не сталкивался с задачей вывода "новинок" товаров на главную из разных компонентов товаров?
созданы несколько компонентов под каждый тип товара, из-за разных наборов свойств. Теперь нужно выводить товары рандомно из всех комопнентов отмеченных как "новинка".
|
|
|
13.11.2012, 02:03
|
|
DiGGy
DiGGy
Зарегистрирован: 2005-04-04
Сообщений: 1546
|
Зря решили по разным компонентам раскидывать. Практика показывает, что лучше сделать в один, и сделать доп. компонент со св-вами, типа у каждой группы товара - свой набор св-в, причем часть св-в можно только из справочников выбирать. И поиск делать по товарам проще и сравнение товаров по св-вам и т.п.
Если переделывать поздно, то опять же решение банально.
1. Надо определить набор одинаковых полей в каждом компоненте товара для вывода на титул, например: Name, Anons, Price, Link
2. Составить sql-запрос:
Цитата:select a.* from (
(select Name, Anons, Price, Link from MessageXX where Checked=1 and Novinka=1 order by rand() limit 3)
union
(select Name, Anons, Price, Link from MessageYY where Checked=1 and Novinka=1 order by rand() limit 3)
union
(select Name, Anons, Price, Link from MessageZZ where Checked=1 and Novinka=1 order by rand() limit 3)
) a
order by rand()
3. Обработать результат sql-запроса и вывести в нужном оформлении
Либо как вариант через listQuery прямо в макете дизайна титула вызвать
Либо как вариант сделать новый компонент, указать в сист. настройках $ignore_all и дальше ручками sql-запрос там сформировать, и в макет дизайна уже выводить через nc_list_class()
Temet nosce...
|
|
|
13.11.2012, 02:38
|
|
sparton
Шекера Евгений
Зарегистрирован: 2010-03-16
Сообщений: 141
|
Спасибо! Тоже за Union думал.
Это решение интереснее -
Цитата:Практика показывает, что лучше сделать в один, и сделать доп. компонент со св-вами, типа у каждой группы товара - свой набор св-в, причем часть св-в можно только из справочников выбирать.
Хотя бы в общих чертах, как построить это дело.
|
|
|
13.11.2012, 03:04
|
|
DiGGy
DiGGy
Зарегистрирован: 2005-04-04
Сообщений: 1546
|
Цитата:Хотя бы в общих чертах, как построить это дело.
Вся пляска идет от модели данных, которая также проста до безобразия. Список нужных таблиц ниже:
1. Группы товаров
2. Св-ва групп товаров
3. Возможные значения св-в (чтобы каждый раз не заносить, можно заранее определить какое-то кол-во значений)
4. Каталог товаров (каждому товару назначается своя конкретная группа)
5. Значения св-в товара (тут хранятся уже конкретные значения св-в товара)
Это всё. Остальное - это вопрос того насколько удобным вы сделаете интерфейс по управлению.
Пример каталога товаров одной группы товаров - тут (так же см. "расширенный подбор" - по св-вам), (а также сравнение товаров по св-вам - это доработки штатного модуля магазина, исходники высылал в неткет лет 5 назад, до сих пор ф-ии сравнения не сделали...)
Более расширенный пример - это яндекс.маркет - там как раз по каждой группе товаров свой частный набор св-в
Temet nosce...
|
|
|
13.11.2012, 03:31
|
|
sparton
Шекера Евгений
Зарегистрирован: 2010-03-16
Сообщений: 141
|
Спасибо!
Каждый из пунктов сделан как компонент?
|
|
|
13.11.2012, 18:48
|
|
DiGGy
DiGGy
Зарегистрирован: 2005-04-04
Сообщений: 1546
|
Да.
Temet nosce...
|
|
|
26.02.2013, 18:55
|
|
ООО «РУМЕДИА»
RMB
Зарегистрирован: 2012-09-10
Сообщений: 24
|
Как-то жестко получается, если каждый пункт как компонент делать.
Получается уйма таблиц и по всем им выборку сразу производите в случае такого фильтра или как?
И где все это ловите в случае если расширенный фильтр задействован? В макете дизайна?
ООО «РУМЕДИА»
|
|
|
26.02.2013, 22:57
|
|
DiGGy
DiGGy
Зарегистрирован: 2005-04-04
Сообщений: 1546
|
Цитата:Как-то жестко получается, если каждый пункт как компонент делать. Получается уйма таблиц
Почему уйма? Всего 5 таблиц. Или это для вас много? Есть системы в 500-1000 таблиц - и ничего страшного.
Цитата:по всем им выборку сразу производите в случае такого фильтра или как?
Да, таблицы связываются по соотв-им ключам и получается результат. Это все одним запросом делается, а не отдельными запросами к каждой таблице.
Цитата:И где все это ловите в случае если расширенный фильтр задействован? В макете дизайна?
В системных настройках компонента - и только там. Юзер формирует условия отбора, далее идет выборка из компонента товаров с учетом всех этих характеристик и выдается результат.
Temet nosce...
|
|
|
27.02.2013, 18:08
|
|
ООО «РУМЕДИА»
RMB
Зарегистрирован: 2012-09-10
Сообщений: 24
|
спасибо за ответ
Цитата:В системных настройках компонента - и только там. Юзер формирует условия отбора, далее идет выборка из компонента товаров с учетом всех этих характеристик и выдается результат.
но тогда не понятно в каком из них, их же много, как их связать вместе?
или один получается основной, который фильтр и он производит выборку изо всех остальных которые являются хранилищами?
ООО «РУМЕДИА»
|
|
|
27.02.2013, 20:40
|
|
DiGGy
DiGGy
Зарегистрирован: 2005-04-04
Сообщений: 1546
|
Основным является компонент "Каталог товаров". В системных настройках вы изменяете штатный sql-запрос таким образом, чтобы результат выборки удовлетворял параметрам фильтра, который задает юзер.
Temet nosce...
|
|
|
05.03.2013, 17:36
|
|
Гость
Гость
|
А можно немного поподробнее. Что в вашем примере является группами товаров, что свойствами групп, что возможными значениями свойств, что такое каталог товаров и значения свойст товаров?
Хотябы примерно какие поля у каждого из этих компонентов?
Спасибо!
|