COVID2019 и это вот все. Друзья, вся эта история начинает плохо пахнет. Мойте руки, не ходите в люди. Отложите все плановые покупки и положите в носок заначку. Заприте ваших родителей, бабушек-дедушек на даче. Лучше перебдеть чем недобдеть. Берегите себя!

xiolog

opencart.pro
  • Публикации

    15
  • Зарегистрирован

  • Посещение

1 подписчик

О xiolog

  • День рождения 01/21/1980

Profile Information

  • Gender
    Male

Посетители профиля

788 просмотров профиля

xiolog's Achievements

  1. Итак... Все изменения проводятся в файле /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"; } После этого все заработало. Не уверен, что это "чистый" подход, но он работает. И остальная сортировка (по наименованию, по рейтингу и т. д.) тоже вроде работает. Не разобрался пока, как сделать, чтобы сортировка "дата (по-убыванию)" была по умолчанию... Может будут идеи. А то непонятно немного было... Вроде в новинках по-умолчанию должны сверху отображаться новые товары, а по факту каша...
  2. Смысл в том, что мне нужно по-умолчанию первыми показывать новые товары. И чтобы сортировка работала при выборе в ниспадающем списке...
  3. Так не работает сортировка по дате при выборе в ниспадающем списке...
  4. Вот так? ORDER BY date_added, sort_order DESC, LCASE(name) DESC LIMIT 0,15 Мне нужно, чтобы новые товары были сверху списка
  5. Сразу хочу извиниться, но я не очень силен в SQL-запросах. Помогите, пожалуйста.
  6. Вот запрос, который получается... 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. Они пусты.
  7. А сейчас можно как-нибудь исправить эту неприятность?
  8. Может связи какие-то в базе еще затрагиваются при выборке товаров?
  9. Какая-то непонятная ситуация... Последний добавленный товар оказался в середине, а не в конце списка товаров на странице Новинки. Еще раз проверил даты в phpmyadmin. Все даты актуальные...
  10. Здравствуйте! У меня проблема возникла... Подскажите, как быть? Ситуация такая: 1. В главном меню есть пункт "Новинки". 2. Добавляю новый товар. Дату оставляю по-умолчанию. 3. Возвращаюсь на страницу Новинок. 4. Товар не отображается. Хотя дату проверил через phpmyadmin. Она, допустим, сегодняшняя. 5. Поискав новый товар, нахожу его почти в конце списка... Хотя сортировка стоит "Дата (по убыванию)". Не знаю, где искать проблему даже... P.S. На главной странице в модуле "Новые поступления" все отображается нормально. Помогите, пожалуйста.
  11. Здравствуйте! У меня проблема возникла... Подскажите, как быть? Ситуация такая: 1. В главном меню есть пункт "Новинки". 2. Добавляю новый товар. Дату оставляю по-умолчанию. 3. Возвращаюсь на страницу Новинок. Обновляю страницу. 4. Товар не отображается. Хотя дату проверил через phpmyadmin. Она, допустим, сегодняшняя. 5. Поискав новый товар, нахожу его почти в конце списка... Хотя сортировка стоит "От новых к старым". Не знаю, где искать проблему даже... P.S. На главной странице в модуле "Новые поступления" все отображается нормально. Если необходим адрес сайта, напишу в личке. Заранее спасибо!
  12. Я тоже присоединяюсь к отзыву. Шаблон отличный, Админка, на удивление, удобная. Екатерина отлично справляется с ролью технической поддержки. Если вопросы появляются, отвечает без задержек. Приятно удивили. В общем, рекомендую и руками и ногами! Отличный вариант за такие деньги