xiolog Опубликовано: сентября 25, 2015 Жалоба Поделиться Опубликовано: сентября 25, 2015 Здравствуйте! У меня проблема возникла... Подскажите, как быть?Ситуация такая: 1. В главном меню есть пункт "Новинки".2. Добавляю новый товар. Дату оставляю по-умолчанию.3. Возвращаюсь на страницу Новинок.4. Товар не отображается. Хотя дату проверил через phpmyadmin. Она, допустим, сегодняшняя.5. Поискав новый товар, нахожу его почти в конце списка... Хотя сортировка стоит "Дата (по убыванию)". Не знаю, где искать проблему даже... P.S. На главной странице в модуле "Новые поступления" все отображается нормально.Помогите, пожалуйста. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
admin Опубликовано: сентября 25, 2015 Жалоба Поделиться Опубликовано: сентября 25, 2015 смотрите контроллер модуля новинок а именно сортировку возможно я там перепутал местами новые\последние Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
xiolog Опубликовано: сентября 25, 2015 Автор Жалоба Поделиться Опубликовано: сентября 25, 2015 А чем новые от последних отличаются? Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
admin Опубликовано: сентября 25, 2015 Жалоба Поделиться Опубликовано: сентября 25, 2015 новые\старые просто вы их последними назвали или я так понялвы лучше в контроллер latest.php в папке продукт посмотрите попробуйте в 24 строке поменять $order = 'DESC';на $order = 'ASC'; Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
xiolog Опубликовано: сентября 25, 2015 Автор Жалоба Поделиться Опубликовано: сентября 25, 2015 Какая-то непонятная ситуация... Последний добавленный товар оказался в середине, а не в конце списка товаров на странице Новинки. Еще раз проверил даты в phpmyadmin. Все даты актуальные... Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
xiolog Опубликовано: сентября 25, 2015 Автор Жалоба Поделиться Опубликовано: сентября 25, 2015 Может связи какие-то в базе еще затрагиваются при выборке товаров? Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
xiolog Опубликовано: сентября 26, 2015 Автор Жалоба Поделиться Опубликовано: сентября 26, 2015 А сейчас можно как-нибудь исправить эту неприятность? Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
xiolog Опубликовано: сентября 27, 2015 Автор Жалоба Поделиться Опубликовано: сентября 27, 2015 Понял. Спасибо. Проверим. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
xiolog Опубликовано: сентября 27, 2015 Автор Жалоба Поделиться Опубликовано: сентября 27, 2015 Вот запрос, который получается...SELECT * FROM (SELECT p.product_id, p.sort_order, p.model, pd.name, p.quantity, p.price, (SELECT price FROM oc_product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '1' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '2015-09-27 07:30:00') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '2015-09-27 07:30:00')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM oc_product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '2015-09-27 07:30:00') AND (ps.date_end = '0000-00-00' OR ps.date_end > '2015-09-27 07:30:00')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT AVG(rating) AS total FROM oc_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM oc_product p LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) WHERE p.status = '1' AND p.date_available <= '2015-09-27 07:30:00' AND p2s.store_id = '0' AND pd.language_id = '1' ORDER BY p.date_added DESC LIMIT 0,100) p ORDER BY sort_order DESC, LCASE(name) DESC LIMIT 0,15Проверил таблицы oc_product_discount, oc_product_special. Они пусты. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
xiolog Опубликовано: сентября 27, 2015 Автор Жалоба Поделиться Опубликовано: сентября 27, 2015 Сразу хочу извиниться, но я не очень силен в SQL-запросах. Помогите, пожалуйста. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
xiolog Опубликовано: сентября 27, 2015 Автор Жалоба Поделиться Опубликовано: сентября 27, 2015 Вот так? ORDER BY date_added, sort_order DESC, LCASE(name) DESC LIMIT 0,15Мне нужно, чтобы новые товары были сверху списка Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
xiolog Опубликовано: сентября 27, 2015 Автор Жалоба Поделиться Опубликовано: сентября 27, 2015 Так не работает сортировка по дате при выборе в ниспадающем списке... Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
xiolog Опубликовано: сентября 27, 2015 Автор Жалоба Поделиться Опубликовано: сентября 27, 2015 Смысл в том, что мне нужно по-умолчанию первыми показывать новые товары. И чтобы сортировка работала при выборе в ниспадающем списке... Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
xiolog Опубликовано: сентября 28, 2015 Автор Жалоба Поделиться Опубликовано: сентября 28, 2015 вроде получилось. Спасибо за помощь Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
bartax Опубликовано: сентября 28, 2015 Жалоба Поделиться Опубликовано: сентября 28, 2015 вроде получилось. Спасибо за помощь Так расскажите более подробнее, как Вы сделали это, потому как найдутся люди, которым так же интересен этот вопрос Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Это популярное сообщение. xiolog Опубликовано: сентября 28, 2015 Автор Это популярное сообщение. Жалоба Поделиться Опубликовано: сентября 28, 2015 Итак... Все изменения проводятся в файле /catalog/model/catalog/product.php. Мои действия:В методе getLatest добавил в выборку поле p.date_added (2-й SELECT) $sql = "SELECT * FROM (SELECT p.product_id, p.sort_order, p.model, pd.name, p.quantity, p.price, p.date_added, (SELECT price FROM " . DB_PREFIX . "product_discount pd2 WHERE pd2.product_id = p.product_id AND pd2.customer_group_id = '" . (int)$customer_group_id . "' AND pd2.quantity = '1' AND ((pd2.date_start = '0000-00-00' OR pd2.date_start < '" . $this->NOW . "') AND (pd2.date_end = '0000-00-00' OR pd2.date_end > '" . $this->NOW . "')) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM " . DB_PREFIX . "product_special ps WHERE ps.product_id = p.product_id AND ps.customer_group_id = '" . (int)$customer_group_id . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < '" . $this->NOW . "') AND (ps.date_end = '0000-00-00' OR ps.date_end > '" . $this->NOW . "')) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special, (SELECT AVG(rating) AS total FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE p.status = '1' AND p.date_available <= '" . $this->NOW . "' AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' ORDER BY p.date_added DESC";2. Затем добавил поле p.date_added в массив для сортировки: $sort_data = array( 'pd.name', 'quantity', 'ps.price', 'rating', 'p.sort_order', 'p.model', 'p.date_added' );3. Добавил поле date_added DESC в последнюю конкатенацию переменной $sql (в блоке else): if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name') { $sql .= " LCASE('name')"; } elseif ($data['sort'] == 'ps.price') { $sql .= " (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " " . $data['sort']; } } else { $sql .= " date_added DESC, sort_order"; }После этого все заработало. Не уверен, что это "чистый" подход, но он работает. И остальная сортировка (по наименованию, по рейтингу и т. д.) тоже вроде работает.Не разобрался пока, как сделать, чтобы сортировка "дата (по-убыванию)" была по умолчанию... Может будут идеи.А то непонятно немного было... Вроде в новинках по-умолчанию должны сверху отображаться новые товары, а по факту каша... forlly 1 Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
oligarhist Опубликовано: сентября 18, 2017 Жалоба Поделиться Опубликовано: сентября 18, 2017 В сборке opencart.pro 2.3 к сожалению проблема не решена. В модуле "Новинки", на странице "Новинки" ...index.php?route=product/latest, товары отсортированы по не понятному принципу. А нужно, чтобы на странице "Новинки" товары были отсортированы по дате p.date_available Подскажите пожалуйста, как это сделать? Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
gyurza2000 Опубликовано: декабря 9, 2019 Жалоба Поделиться Опубликовано: декабря 9, 2019 В 28.09.2015 at 10:53, xiolog сказал: Итак... Все изменения проводятся в файле /catalog/model/catalog/product.php Итак, меня мучает та же проблема на 2.3.0.2.4 - сортировка latest по умолчанию ‘p.sort_order‘. и на ‘p.date_added‘ никак не меняется. В указанном файле (/catalog/model/catalog/product.php) точек входа на решение проблемы не нахожу. Какой файл ковырять надо по вышеизложенной методе? Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
BuslikDrev Опубликовано: декабря 9, 2019 Жалоба Поделиться Опубликовано: декабря 9, 2019 4 часа назад, gyurza2000 сказал: /catalog/model/catalog/product.php Если в /catalog/model/catalog/product.php не находите, то откройте контроллер страницы новинок и посмотрите где искать нужно. Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
gyurza2000 Опубликовано: декабря 10, 2019 Жалоба Поделиться Опубликовано: декабря 10, 2019 В контроллере идёт отсыл на 2 модели: catalog/product и catalog/cms Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
gyurza2000 Опубликовано: декабря 10, 2019 Жалоба Поделиться Опубликовано: декабря 10, 2019 В 28.09.2015 at 10:53, xiolog сказал: Хм...комрад XIOLOG проводил свои эксперименты на полуторном OpenCart, а у меня 2.3 Цитата Ссылка на комментарий Поделиться на других сайтах Больше вариантов поделиться...
Рекомендуемые сообщения
Присоединяйтесь к обсуждению
Вы можете опубликовать сейчас и зарегистрироваться позже. Если у вас есть учётная запись, войдите, чтобы публиковать под своей учётной записью.