alinalessioYandex Опубліковано: 3 квітня 2020 Share Опубліковано: 3 квітня 2020 Помогите пожалуйста настроить сортировку товаров в категориях так, чтобы сначала были товары тех производителей, чей порядок сортировки выше. Видел как делают сортировку по производителю в алфавитном порядке, но надо, чтобы можно было самому указывать порядок, а для этого ни ИД, ни алфавит не подойдут, а ручной порядок сортировки для производителей вполне сгодится. Подскажите пожалуйста. Надіслати Поділитися на інших сайтах More sharing options...
esculapra Опубліковано: 3 квітня 2020 Share Опубліковано: 3 квітня 2020 В модели продукта есть код Цитата $sort_data = array( 'pd.name', 'p.model', 'p.quantity', 'p.price', 'rating', 'p.sort_order', 'p.date_added' ); if (isset($data['sort']) && in_array($data['sort'], $sort_data)) { if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') { $sql .= " ORDER BY LCASE(" . $data['sort'] . ")"; } elseif ($data['sort'] == 'p.price') { $sql .= " ORDER BY (CASE WHEN special IS NOT NULL THEN special WHEN discount IS NOT NULL THEN discount ELSE p.price END)"; } else { $sql .= " ORDER BY " . $data['sort']; } } else { $sql .= " ORDER BY p.sort_order"; } Тут по умолчанию идет сортировка по sort_orde } else { $sql .= " ORDER BY p.sort_order"; } Замени на $sql .= " ORDER BY p.manufacturer_id" 1 Надіслати Поділитися на інших сайтах More sharing options... alinalessioYandex Опубліковано: 5 квітня 2020 Автор Share Опубліковано: 5 квітня 2020 (змінено) В 04.04.2020 в 02:46, esculapra сказал: В модели продукта есть код Тут по умолчанию идет сортировка по sort_orde } else { $sql .= " ORDER BY p.sort_order"; } Замени на $sql .= " ORDER BY p.manufacturer_id" Спасибо. Сделал так как вы описали. В файле catalog/model/catalog/product.php нашел строчку } else { $sql .= " ORDER BY p.sort_order"; } И изменил на } else { $sql .= " ORDER BY p.manufacturer_id"; } Обновил модификаторы, но в категории ничего не произошло. Все как было, так и осталось. Змінено 5 квітня 2020 користувачем alinalessioYandex Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 5 квітня 2020 Share Опубліковано: 5 квітня 2020 1 минуту назад, alinalessioYandex сказал: в категории ничего не произошло Сделай принт сроки запроса - print_r($sql) - и посмотри на него 1 Надіслати Поділитися на інших сайтах More sharing options... alinalessioYandex Опубліковано: 5 квітня 2020 Автор Share Опубліковано: 5 квітня 2020 20 минут назад, esculapra сказал: Сделай принт сроки запроса - print_r($sql) - и посмотри на него Не понял, как сделать принт запроса. ))) Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 5 квітня 2020 Share Опубліковано: 5 квітня 2020 Добавь print_r($sql) перед $query = $this->db->query($sql); 1 Надіслати Поділитися на інших сайтах More sharing options... alinalessioYandex Опубліковано: 5 квітня 2020 Автор Share Опубліковано: 5 квітня 2020 (змінено) 26 минут назад, esculapra сказал: Добавь print_r($sql) перед $query = $this->db->query($sql); Спасибо вам! Вот, какими ошибками высыпало. ))) SELECT p.product_id, (SELECT AVG(rating) AS total FROM web72ru_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM web72ru_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 < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM web72ru_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 < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM web72ru_product_to_category p2c LEFT JOIN web72ru_product p ON (p2c.product_id = p.product_id) LEFT JOIN web72ru_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN web72ru_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p2c.category_id = '76' GROUP BY p.product_id ORDER BY p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,15 Змінено 5 квітня 2020 користувачем alinalessioYandex Надіслати Поділитися на інших сайтах More sharing options... alinalessioYandex Опубліковано: 5 квітня 2020 Автор Share Опубліковано: 5 квітня 2020 (змінено) Вроде получилось. Спасибо. Но, сейчас товары сортируются по производителям, где производители выстраиваются по ID. А можно сделать так, чтобы можно было из админки задавать порядок очередности? В админке, производителям можно указать сортировку. Можно ли подвязать эту сортировку к сортировке товаров в категориях? Чтобы товары сортировались по умолчанию не по ID производителей, а по номеру сортировки. --------------------------- Так как сейчас товары сортируются по ИД производителя, думал, мне удастся просто в базе данных производителям дать нужный порядок ИД и тогда товары будут сортироваться в нужном порядке. Но заменив в таблице ИД одного производителя, ничего не произошло. Только сам производитель исчез. Похоже, что ИД производителей упоминается в других таблицах и заменять ИД нужно во всех таблицах, а не в одной. Посоветуйте как сделать сортировку, чтобы товары выстраивались по производителям, но при том, чтобы их можно было порядок производителей самому построить. Змінено 5 квітня 2020 користувачем alinalessioYandex Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 5 квітня 2020 Share Опубліковано: 5 квітня 2020 3 часа назад, alinalessioYandex сказал: Посоветуйте как сделать сортировку, чтобы товары выстраивались по производителям, но при том, чтобы их можно было порядок производителей самому построить. Я думаю можно отдельно выбрать из таблицы производителей отсортированные по sort_order, а потом сделать типа обхода массива Цитата foreach($manufacturer as $man){ foreach($products as $product){ if($product['manufacturer_id']==$man['manufacturer_id']) $sort_products[]=$product; } } Могут быть еще варианты. 1 Надіслати Поділитися на інших сайтах More sharing options... alinalessioYandex Опубліковано: 6 квітня 2020 Автор Share Опубліковано: 6 квітня 2020 10 часов назад, esculapra сказал: Я думаю можно отдельно выбрать из таблицы производителей отсортированные по sort_order, а потом сделать типа обхода массива Могут быть еще варианты. Вот-вот! Именно так и надо. Вы можете написать окмод? А я бы у вас купил. Ну или напишите пожалуйста подробней пошагово, что делать. Вы предложили как раз то, что надо. Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 6 квітня 2020 Share Опубліковано: 6 квітня 2020 Хорошо, скинь в личку ТЗ. То есть как ты представляешь алгоритм работы с этим фильтром А я уже реализую в коде. По цене договоримся. 1 Надіслати Поділитися на інших сайтах More sharing options... alinalessioYandex Опубліковано: 8 квітня 2020 Автор Share Опубліковано: 8 квітня 2020 [РЕШЕНО] Спасибо esculapra за готовность помочь и за то что подкинул отличную идею! Решение обошлось без манипуляций с файлами, а штатными возможностями движка + модулем. Если есть модуль по массовому управлению товарами, в моем случае "Batch Editor" или "Автоматическая обработка прайс-листов.", то можно просто выбрать определенного производителя и всем его товарам присвоить одно значение сортировки, а для других товаров, других производителей, соответственно другие. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Налаштування та оптимізація Сортировать товары в категориях по производителю, по порядку сортировки Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich × Уже зареєстровані? Ввійти Реєстрація Ваші замовлення Назад Придбані модулі та шаблони Ваші рахунки Лист очікувань Альтернативні контакти Форум Новини ocStore Назад Офіційний сайт Демо ocStore 3.0.3.2 Демо ocStore 2.3.0.2.4 Завантажити ocStore Документація Історія версій ocStore Блоги Модулі Шаблони Назад Безкоштовні шаблони Платні шаблони Де купувати модулі? Послуги FAQ OpenCart.Pro Назад Демо Купити Порівняння × Створити... Important Information На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність. Я даю згоду
alinalessioYandex Опубліковано: 5 квітня 2020 Автор Share Опубліковано: 5 квітня 2020 (змінено) В 04.04.2020 в 02:46, esculapra сказал: В модели продукта есть код Тут по умолчанию идет сортировка по sort_orde } else { $sql .= " ORDER BY p.sort_order"; } Замени на $sql .= " ORDER BY p.manufacturer_id" Спасибо. Сделал так как вы описали. В файле catalog/model/catalog/product.php нашел строчку } else { $sql .= " ORDER BY p.sort_order"; } И изменил на } else { $sql .= " ORDER BY p.manufacturer_id"; } Обновил модификаторы, но в категории ничего не произошло. Все как было, так и осталось. Змінено 5 квітня 2020 користувачем alinalessioYandex Надіслати Поділитися на інших сайтах More sharing options...
esculapra Опубліковано: 5 квітня 2020 Share Опубліковано: 5 квітня 2020 1 минуту назад, alinalessioYandex сказал: в категории ничего не произошло Сделай принт сроки запроса - print_r($sql) - и посмотри на него 1 Надіслати Поділитися на інших сайтах More sharing options... alinalessioYandex Опубліковано: 5 квітня 2020 Автор Share Опубліковано: 5 квітня 2020 20 минут назад, esculapra сказал: Сделай принт сроки запроса - print_r($sql) - и посмотри на него Не понял, как сделать принт запроса. ))) Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 5 квітня 2020 Share Опубліковано: 5 квітня 2020 Добавь print_r($sql) перед $query = $this->db->query($sql); 1 Надіслати Поділитися на інших сайтах More sharing options... alinalessioYandex Опубліковано: 5 квітня 2020 Автор Share Опубліковано: 5 квітня 2020 (змінено) 26 минут назад, esculapra сказал: Добавь print_r($sql) перед $query = $this->db->query($sql); Спасибо вам! Вот, какими ошибками высыпало. ))) SELECT p.product_id, (SELECT AVG(rating) AS total FROM web72ru_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM web72ru_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 < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM web72ru_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 < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM web72ru_product_to_category p2c LEFT JOIN web72ru_product p ON (p2c.product_id = p.product_id) LEFT JOIN web72ru_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN web72ru_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p2c.category_id = '76' GROUP BY p.product_id ORDER BY p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,15 Змінено 5 квітня 2020 користувачем alinalessioYandex Надіслати Поділитися на інших сайтах More sharing options... alinalessioYandex Опубліковано: 5 квітня 2020 Автор Share Опубліковано: 5 квітня 2020 (змінено) Вроде получилось. Спасибо. Но, сейчас товары сортируются по производителям, где производители выстраиваются по ID. А можно сделать так, чтобы можно было из админки задавать порядок очередности? В админке, производителям можно указать сортировку. Можно ли подвязать эту сортировку к сортировке товаров в категориях? Чтобы товары сортировались по умолчанию не по ID производителей, а по номеру сортировки. --------------------------- Так как сейчас товары сортируются по ИД производителя, думал, мне удастся просто в базе данных производителям дать нужный порядок ИД и тогда товары будут сортироваться в нужном порядке. Но заменив в таблице ИД одного производителя, ничего не произошло. Только сам производитель исчез. Похоже, что ИД производителей упоминается в других таблицах и заменять ИД нужно во всех таблицах, а не в одной. Посоветуйте как сделать сортировку, чтобы товары выстраивались по производителям, но при том, чтобы их можно было порядок производителей самому построить. Змінено 5 квітня 2020 користувачем alinalessioYandex Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 5 квітня 2020 Share Опубліковано: 5 квітня 2020 3 часа назад, alinalessioYandex сказал: Посоветуйте как сделать сортировку, чтобы товары выстраивались по производителям, но при том, чтобы их можно было порядок производителей самому построить. Я думаю можно отдельно выбрать из таблицы производителей отсортированные по sort_order, а потом сделать типа обхода массива Цитата foreach($manufacturer as $man){ foreach($products as $product){ if($product['manufacturer_id']==$man['manufacturer_id']) $sort_products[]=$product; } } Могут быть еще варианты. 1 Надіслати Поділитися на інших сайтах More sharing options... alinalessioYandex Опубліковано: 6 квітня 2020 Автор Share Опубліковано: 6 квітня 2020 10 часов назад, esculapra сказал: Я думаю можно отдельно выбрать из таблицы производителей отсортированные по sort_order, а потом сделать типа обхода массива Могут быть еще варианты. Вот-вот! Именно так и надо. Вы можете написать окмод? А я бы у вас купил. Ну или напишите пожалуйста подробней пошагово, что делать. Вы предложили как раз то, что надо. Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 6 квітня 2020 Share Опубліковано: 6 квітня 2020 Хорошо, скинь в личку ТЗ. То есть как ты представляешь алгоритм работы с этим фильтром А я уже реализую в коде. По цене договоримся. 1 Надіслати Поділитися на інших сайтах More sharing options... alinalessioYandex Опубліковано: 8 квітня 2020 Автор Share Опубліковано: 8 квітня 2020 [РЕШЕНО] Спасибо esculapra за готовность помочь и за то что подкинул отличную идею! Решение обошлось без манипуляций с файлами, а штатными возможностями движка + модулем. Если есть модуль по массовому управлению товарами, в моем случае "Batch Editor" или "Автоматическая обработка прайс-листов.", то можно просто выбрать определенного производителя и всем его товарам присвоить одно значение сортировки, а для других товаров, других производителей, соответственно другие. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Налаштування та оптимізація Сортировать товары в категориях по производителю, по порядку сортировки Покупцям Оплата розширень фізичними особами Оплата розширень юридичними особами Політика повернень Розробникам Регламент розміщення розширень Регламент продажу та підтримки розширень Віртуальний обліковий запис автора Політика просування оголошень API каталогу розширень Вирішення спорів щодо авторських прав Корисна інформація Публічна оферта Політика повернень Політика конфіденційності Платіжна політика Політика передачі особистих даних Політика прозорості Останні розширення Повний пакет SEO Автор: GeekoDev SameSite Session Fix Opencart 3 Автор: web_bond SP Telegram повідомлення FREE Автор: spectre Відключити порожні категорії Автор: spectre SEO Автор тексту категорії / фільтра / блогу з датою оновлення контенту + мікророзмітка Автор: radaevich
alinalessioYandex Опубліковано: 5 квітня 2020 Автор Share Опубліковано: 5 квітня 2020 20 минут назад, esculapra сказал: Сделай принт сроки запроса - print_r($sql) - и посмотри на него Не понял, как сделать принт запроса. ))) Надіслати Поділитися на інших сайтах More sharing options...
esculapra Опубліковано: 5 квітня 2020 Share Опубліковано: 5 квітня 2020 Добавь print_r($sql) перед $query = $this->db->query($sql); 1 Надіслати Поділитися на інших сайтах More sharing options... alinalessioYandex Опубліковано: 5 квітня 2020 Автор Share Опубліковано: 5 квітня 2020 (змінено) 26 минут назад, esculapra сказал: Добавь print_r($sql) перед $query = $this->db->query($sql); Спасибо вам! Вот, какими ошибками высыпало. ))) SELECT p.product_id, (SELECT AVG(rating) AS total FROM web72ru_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM web72ru_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 < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM web72ru_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 < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM web72ru_product_to_category p2c LEFT JOIN web72ru_product p ON (p2c.product_id = p.product_id) LEFT JOIN web72ru_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN web72ru_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p2c.category_id = '76' GROUP BY p.product_id ORDER BY p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,15 Змінено 5 квітня 2020 користувачем alinalessioYandex Надіслати Поділитися на інших сайтах More sharing options... alinalessioYandex Опубліковано: 5 квітня 2020 Автор Share Опубліковано: 5 квітня 2020 (змінено) Вроде получилось. Спасибо. Но, сейчас товары сортируются по производителям, где производители выстраиваются по ID. А можно сделать так, чтобы можно было из админки задавать порядок очередности? В админке, производителям можно указать сортировку. Можно ли подвязать эту сортировку к сортировке товаров в категориях? Чтобы товары сортировались по умолчанию не по ID производителей, а по номеру сортировки. --------------------------- Так как сейчас товары сортируются по ИД производителя, думал, мне удастся просто в базе данных производителям дать нужный порядок ИД и тогда товары будут сортироваться в нужном порядке. Но заменив в таблице ИД одного производителя, ничего не произошло. Только сам производитель исчез. Похоже, что ИД производителей упоминается в других таблицах и заменять ИД нужно во всех таблицах, а не в одной. Посоветуйте как сделать сортировку, чтобы товары выстраивались по производителям, но при том, чтобы их можно было порядок производителей самому построить. Змінено 5 квітня 2020 користувачем alinalessioYandex Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 5 квітня 2020 Share Опубліковано: 5 квітня 2020 3 часа назад, alinalessioYandex сказал: Посоветуйте как сделать сортировку, чтобы товары выстраивались по производителям, но при том, чтобы их можно было порядок производителей самому построить. Я думаю можно отдельно выбрать из таблицы производителей отсортированные по sort_order, а потом сделать типа обхода массива Цитата foreach($manufacturer as $man){ foreach($products as $product){ if($product['manufacturer_id']==$man['manufacturer_id']) $sort_products[]=$product; } } Могут быть еще варианты. 1 Надіслати Поділитися на інших сайтах More sharing options... alinalessioYandex Опубліковано: 6 квітня 2020 Автор Share Опубліковано: 6 квітня 2020 10 часов назад, esculapra сказал: Я думаю можно отдельно выбрать из таблицы производителей отсортированные по sort_order, а потом сделать типа обхода массива Могут быть еще варианты. Вот-вот! Именно так и надо. Вы можете написать окмод? А я бы у вас купил. Ну или напишите пожалуйста подробней пошагово, что делать. Вы предложили как раз то, что надо. Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 6 квітня 2020 Share Опубліковано: 6 квітня 2020 Хорошо, скинь в личку ТЗ. То есть как ты представляешь алгоритм работы с этим фильтром А я уже реализую в коде. По цене договоримся. 1 Надіслати Поділитися на інших сайтах More sharing options... alinalessioYandex Опубліковано: 8 квітня 2020 Автор Share Опубліковано: 8 квітня 2020 [РЕШЕНО] Спасибо esculapra за готовность помочь и за то что подкинул отличную идею! Решение обошлось без манипуляций с файлами, а штатными возможностями движка + модулем. Если есть модуль по массовому управлению товарами, в моем случае "Batch Editor" или "Автоматическая обработка прайс-листов.", то можно просто выбрать определенного производителя и всем его товарам присвоить одно значение сортировки, а для других товаров, других производителей, соответственно другие. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку Последние темы Последние дополнения Последние новости Вся активність Головна Opencart 2.x Opencart 2.x: Налаштування та оптимізація Сортировать товары в категориях по производителю, по порядку сортировки
alinalessioYandex Опубліковано: 5 квітня 2020 Автор Share Опубліковано: 5 квітня 2020 (змінено) 26 минут назад, esculapra сказал: Добавь print_r($sql) перед $query = $this->db->query($sql); Спасибо вам! Вот, какими ошибками высыпало. ))) SELECT p.product_id, (SELECT AVG(rating) AS total FROM web72ru_review r1 WHERE r1.product_id = p.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating, (SELECT price FROM web72ru_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 < NOW()) AND (pd2.date_end = '0000-00-00' OR pd2.date_end > NOW())) ORDER BY pd2.priority ASC, pd2.price ASC LIMIT 1) AS discount, (SELECT price FROM web72ru_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 < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) ORDER BY ps.priority ASC, ps.price ASC LIMIT 1) AS special FROM web72ru_product_to_category p2c LEFT JOIN web72ru_product p ON (p2c.product_id = p.product_id) LEFT JOIN web72ru_product_description pd ON (p.product_id = pd.product_id) LEFT JOIN web72ru_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE pd.language_id = '1' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND p2c.category_id = '76' GROUP BY p.product_id ORDER BY p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,15 Змінено 5 квітня 2020 користувачем alinalessioYandex Надіслати Поділитися на інших сайтах More sharing options...
alinalessioYandex Опубліковано: 5 квітня 2020 Автор Share Опубліковано: 5 квітня 2020 (змінено) Вроде получилось. Спасибо. Но, сейчас товары сортируются по производителям, где производители выстраиваются по ID. А можно сделать так, чтобы можно было из админки задавать порядок очередности? В админке, производителям можно указать сортировку. Можно ли подвязать эту сортировку к сортировке товаров в категориях? Чтобы товары сортировались по умолчанию не по ID производителей, а по номеру сортировки. --------------------------- Так как сейчас товары сортируются по ИД производителя, думал, мне удастся просто в базе данных производителям дать нужный порядок ИД и тогда товары будут сортироваться в нужном порядке. Но заменив в таблице ИД одного производителя, ничего не произошло. Только сам производитель исчез. Похоже, что ИД производителей упоминается в других таблицах и заменять ИД нужно во всех таблицах, а не в одной. Посоветуйте как сделать сортировку, чтобы товары выстраивались по производителям, но при том, чтобы их можно было порядок производителей самому построить. Змінено 5 квітня 2020 користувачем alinalessioYandex Надіслати Поділитися на інших сайтах More sharing options...
esculapra Опубліковано: 5 квітня 2020 Share Опубліковано: 5 квітня 2020 3 часа назад, alinalessioYandex сказал: Посоветуйте как сделать сортировку, чтобы товары выстраивались по производителям, но при том, чтобы их можно было порядок производителей самому построить. Я думаю можно отдельно выбрать из таблицы производителей отсортированные по sort_order, а потом сделать типа обхода массива Цитата foreach($manufacturer as $man){ foreach($products as $product){ if($product['manufacturer_id']==$man['manufacturer_id']) $sort_products[]=$product; } } Могут быть еще варианты. 1 Надіслати Поділитися на інших сайтах More sharing options... alinalessioYandex Опубліковано: 6 квітня 2020 Автор Share Опубліковано: 6 квітня 2020 10 часов назад, esculapra сказал: Я думаю можно отдельно выбрать из таблицы производителей отсортированные по sort_order, а потом сделать типа обхода массива Могут быть еще варианты. Вот-вот! Именно так и надо. Вы можете написать окмод? А я бы у вас купил. Ну или напишите пожалуйста подробней пошагово, что делать. Вы предложили как раз то, что надо. Надіслати Поділитися на інших сайтах More sharing options... esculapra Опубліковано: 6 квітня 2020 Share Опубліковано: 6 квітня 2020 Хорошо, скинь в личку ТЗ. То есть как ты представляешь алгоритм работы с этим фильтром А я уже реализую в коде. По цене договоримся. 1 Надіслати Поділитися на інших сайтах More sharing options... alinalessioYandex Опубліковано: 8 квітня 2020 Автор Share Опубліковано: 8 квітня 2020 [РЕШЕНО] Спасибо esculapra за готовность помочь и за то что подкинул отличную идею! Решение обошлось без манипуляций с файлами, а штатными возможностями движка + модулем. Если есть модуль по массовому управлению товарами, в моем случае "Batch Editor" или "Автоматическая обработка прайс-листов.", то можно просто выбрать определенного производителя и всем его товарам присвоить одно значение сортировки, а для других товаров, других производителей, соответственно другие. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1 Перейти до списку тем Зараз на сторінці 0 користувачів Ні користувачів, які переглядиють цю сторінку
alinalessioYandex Опубліковано: 6 квітня 2020 Автор Share Опубліковано: 6 квітня 2020 10 часов назад, esculapra сказал: Я думаю можно отдельно выбрать из таблицы производителей отсортированные по sort_order, а потом сделать типа обхода массива Могут быть еще варианты. Вот-вот! Именно так и надо. Вы можете написать окмод? А я бы у вас купил. Ну или напишите пожалуйста подробней пошагово, что делать. Вы предложили как раз то, что надо. Надіслати Поділитися на інших сайтах More sharing options...
esculapra Опубліковано: 6 квітня 2020 Share Опубліковано: 6 квітня 2020 Хорошо, скинь в личку ТЗ. То есть как ты представляешь алгоритм работы с этим фильтром А я уже реализую в коде. По цене договоримся. 1 Надіслати Поділитися на інших сайтах More sharing options... alinalessioYandex Опубліковано: 8 квітня 2020 Автор Share Опубліковано: 8 квітня 2020 [РЕШЕНО] Спасибо esculapra за готовность помочь и за то что подкинул отличную идею! Решение обошлось без манипуляций с файлами, а штатными возможностями движка + модулем. Если есть модуль по массовому управлению товарами, в моем случае "Batch Editor" или "Автоматическая обработка прайс-листов.", то можно просто выбрать определенного производителя и всем его товарам присвоить одно значение сортировки, а для других товаров, других производителей, соответственно другие. Надіслати Поділитися на інших сайтах More sharing options... Створіть аккаунт або увійдіть для коментування Ви повинні бути користувачем, щоб залишити коментар Створити обліковий запис Зареєструйтеся для отримання облікового запису. Це просто! Зареєструвати аккаунт Вхід Уже зареєстровані? Увійдіть тут. Вхід зараз Share More sharing options... Передплатники 1
alinalessioYandex Опубліковано: 8 квітня 2020 Автор Share Опубліковано: 8 квітня 2020 [РЕШЕНО] Спасибо esculapra за готовность помочь и за то что подкинул отличную идею! Решение обошлось без манипуляций с файлами, а штатными возможностями движка + модулем. Если есть модуль по массовому управлению товарами, в моем случае "Batch Editor" или "Автоматическая обработка прайс-листов.", то можно просто выбрать определенного производителя и всем его товарам присвоить одно значение сортировки, а для других товаров, других производителей, соответственно другие. Надіслати Поділитися на інших сайтах More sharing options...
Recommended Posts