Регистрация
Вход через соцсети
Восстановление пароля

Вывод "новинок" из разных компонентов ИМ

Новый топик
Страницы: 1  |  2
12.11.2012, 18:13
Ответить | Цитировать
sparton
Шекера Евгений

Зарегистрирован:
2010-03-16
Сообщений: 141

Никто не сталкивался с задачей вывода "новинок" товаров на главную из разных компонентов товаров?
созданы несколько компонентов под каждый тип товара, из-за разных наборов свойств. Теперь нужно выводить товары рандомно из всех комопнентов отмеченных как "новинка".
13.11.2012, 02:03
Ответить | Цитировать
DiGGy
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
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
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

Да.

Temet nosce...
26.02.2013, 18:55
Ответить | Цитировать
РБ-Медиа
rbmedia
РБ-Медиа

Зарегистрирован:
2012-09-10
Сообщений: 23

Как-то жестко получается, если каждый пункт как компонент делать.
Получается уйма таблиц и по всем им выборку сразу производите в случае такого фильтра или как?
И где все это ловите в случае если расширенный фильтр задействован? В макете дизайна?
26.02.2013, 22:57
Ответить | Цитировать
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

Цитата:
Как-то жестко получается, если каждый пункт как компонент делать. Получается уйма таблиц

Почему уйма? Всего 5 таблиц. Или это для вас много? Есть системы в 500-1000 таблиц - и ничего страшного.

Цитата:
по всем им выборку сразу производите в случае такого фильтра или как?

Да, таблицы связываются по соотв-им ключам и получается результат. Это все одним запросом делается, а не отдельными запросами к каждой таблице.

Цитата:
И где все это ловите в случае если расширенный фильтр задействован? В макете дизайна?

В системных настройках компонента - и только там. Юзер формирует условия отбора, далее идет выборка из компонента товаров с учетом всех этих характеристик и выдается результат.

Temet nosce...
27.02.2013, 18:08
Ответить | Цитировать
РБ-Медиа
rbmedia
РБ-Медиа

Зарегистрирован:
2012-09-10
Сообщений: 23

спасибо за ответ

Цитата:
В системных настройках компонента - и только там. Юзер формирует условия отбора, далее идет выборка из компонента товаров с учетом всех этих характеристик и выдается результат.


но тогда не понятно в каком из них, их же много, как их связать вместе?
или один получается основной, который фильтр и он производит выборку изо всех остальных которые являются хранилищами?
27.02.2013, 20:40
Ответить | Цитировать
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

Основным является компонент "Каталог товаров". В системных настройках вы изменяете штатный sql-запрос таким образом, чтобы результат выборки удовлетворял параметрам фильтра, который задает юзер.

Temet nosce...
05.03.2013, 17:36
Ответить | Цитировать
Гость
Гость

А можно немного поподробнее. Что в вашем примере является группами товаров, что свойствами групп, что возможными значениями свойств, что такое каталог товаров и значения свойст товаров?
Хотябы примерно какие поля у каждого из этих компонентов?
Спасибо!
198 196 2015-02-05 20:46:22 12729
Страницы: 1  |  2
Описание проекта