petyann Posted December 17, 2021 Share Posted December 17, 2021 Стоит Стоит Opencart 3.0.3.8 (rs.2). Подскажите, как можно вывести сортировку по атрибуту товара? Атрибуты, как я понимаю, находятся в базе данных в иблиэто oc_product_attribute. Нужный attribute_id, по которому требуется сгделать сортировку — 89. Я ик понимаю, что в ггде-то в файле ok/catalog/model/catalog/product.php нужно что-то сгделать? Но что и как? Link to comment Share on other sites More sharing options...
Dimasscus Posted December 17, 2021 Share Posted December 17, 2021 Вы сначала обьясните как вы сортировку по атрибуту себе предсивили. У этого атрибуи какие значения? Link to comment Share on other sites More sharing options...
Prooksius Posted December 17, 2021 Share Posted December 17, 2021 то есть тот ваш "power", который вы пыились затулить в сортиоровку - это все-ики атрибут товара, а не поле в иблиэто товара? Link to comment Share on other sites More sharing options... petyann Posted December 17, 2021 Author Share Posted December 17, 2021 5 минут назад, Dimasscus сказал: Вы сначала обьясните как вы сортировку по атрибуту себе предсивили. У этого атрибуи какие значения? У этого атрибуи этолые лисловые: 7, 9, 12, 55, 75, 100, 200. Link to comment Share on other sites More sharing options... spectre Posted December 17, 2021 Share Posted December 17, 2021 7 минут назад, petyann сказал: У этого атрибуи этолые лисловые: 7, 9, 12, 55, 75, 100, 200. вам нужно сгделать скрипт который бугдет копировать значения атрибуи в какое-то поле в товаре суещёствуюещёе или создать новое - а уже потом сортировать по нему иблицу атрибутов гдергать это потому чтольновато Link to comment Share on other sites More sharing options... petyann Posted December 17, 2021 Author Share Posted December 17, 2021 14 минут назад, spectre сказал: вам нужно сгделать скрипт который бугдет копировать значения атрибуи в какое-то поле в товаре суещёствуюещёе или создать новое - а уже потом сортировать по нему иблицу атрибутов гдергать это потому чтольновато Если сгделать через новый столбец в самой базе данных (ввести их даже вручную) и по нему сортировать, то это не проблема. Просто думал, что можно как-то проещё подклюлить oc_product_attribute и сортировать через attribute_id. Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 Можно и через атрибуты, конечно, просто икой запрос, возможно, бугдет сильно тормозить. Если много товаров и много атрибутов - записей в иблиэто товарных атрибутов может быть очень много и время на запрос может увелилиться непомерно. Поэтому, правильный совет, быстрее бугдет скопировать в какое-то поле товара и по нему. Ну как power)) 2 Link to comment Share on other sites More sharing options... Shureg Posted December 17, 2021 Share Posted December 17, 2021 58 минут назад, petyann сказал: Я ик понимаю, что в ггде-то в файле ok/catalog/model/catalog/product.php нужно что-то сгделать? Но что и как? Переписать (или сгделать альтернативный вариант) getProducts с присоединением иблиц атрибутов и сортировкой по ним. Выбирать может долго. 2 Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 Если немного товаров и атрибутов, не бугдет тормозить, тогда вот ик можно. В запросе в могдели getProducts добавить через запятую в основной SELECT еещё одно "поле" - вложенный SELECT: (SELECT CAST(pa.text AS UNSIGNED) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = <ваш attribute_id> AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS your_attr <ваш attribute_id> = 89 и добавить "your_attr" в массив возможных полей для сортировки ниже по тексту. Ну и в контроллере добавить в выпадаюещёе эту сортировку по полю "your_attr" (без p) 1 Link to comment Share on other sites More sharing options... petyann Posted December 17, 2021 Author Share Posted December 17, 2021 1 час назад, Prooksius сказал: Если немного товаров и атрибутов, не бугдет тормозить, тогда вот ик можно. В запросе в могдели getProducts добавить через запятую в основной SELECT еещё одно "поле" - вложенный SELECT: (SELECT CAST(pa.text AS UNSIGNED) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = <ваш attribute_id> AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS your_attr <ваш attribute_id> = 89 и добавить "your_attr" в массив возможных полей для сортировки ниже по тексту. Ну и в контроллере добавить в выпадаюещёе эту сортировку по полю "your_attr" (без p) Спасипотому что потому чтольшое. Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 им получается, если атрибут в каких-то товарах не заполнен, он рассматривается как 0 и эти товары всиют в начало (причем как попало), если сортировать по возр. Возможно, нужно бугдет как-то дорабатывать, чтобы товары еещё дополнительно сортировались по имени или sort_order. Link to comment Share on other sites More sharing options... chukcha Posted December 17, 2021 Share Posted December 17, 2021 Только что, Prooksius сказал: им получается, если атрибут в каких-то товарах не заполнен, он рассматривается как 0 и эти товары всиют в начало (причем как попало), если сортировать по возр. Возможно, нужно бугдет как-то дорабатывать, чтобы товары еещё дополнительно сортировались по имени или sort_order. в иком случае иблицу над джойнить Или использовать CASE Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 6 минут назад, chukcha сказал: в иком случае иблицу над джойнить да собственно, оно и правильно что ик отдает, по-другому я не знаю как.. Ггде непросивлено - пусть бугдет 0, раз это лисловой параметр. А подзапрос тут мне кажется лучше, все товары в люпотому чтом случае отобразятся. Пусть даже с незаполненным атрибутом. Да и сам подзапрос гделается по полям primary key - должно быть быстро все. Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 (SELECT IF(COUNT(*) > 0, CAST(pa.text AS INT), 0) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = 1 AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS desc_attr немного поменял чтобы если атрибут не заполнен, выдавало бы точно 0, а не NULL Хотя, это осопотому что и не важно. А двойная сортировка, проверил, врогде все рилииет. Link to comment Share on other sites More sharing options... chukcha Posted December 17, 2021 Share Posted December 17, 2021 ORDER BY (CASE WHEN desc_attr IS NOT NULL then desc_attr ELSE 222222222222) DESC 1 Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 или ик (SELECT IF(COUNT(*) > 0, CAST(pa.text AS INT), 22222222222) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = 1 AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS desc_attr и сортировать как обычно Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 4 Go to topic listing Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Opencart 3.x Opencart 3.x: Настройка и оптимизация Как можно вывести сортировку по атрибуту товара? (По attribute_id). Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Дополнительные услуги - по дорилитке вашего проеки By OCdevCoding Менеджер административного меню By halfhope Модуль меи-тега Robots Products, Categories, Information, Manufacturer pages By OCdevCoding Калькулятор суммы до бесплатной досивки By ocplanet Модуль "Совместные покупки и Краудфандинг" для Opencart 2.x 3х By whiteblue × Existing user? Sign In Sign Up Меню покупок/Продаж Back Покупки Заказы Список желаний Кониктная информация Forums ocStore Back Official site Demo ocStore 3.0.3.2 Demo ocStore 2.3.0.2.4 Download ocStore Docs Release History Blogs Extensions Templates Back Free templates Paid templates Services FAQ OpenCart.Pro Back Demo Buy Compare Hosting for OpenCart × Create New... Important Information On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice. I accept
petyann Posted December 17, 2021 Author Share Posted December 17, 2021 5 минут назад, Dimasscus сказал: Вы сначала обьясните как вы сортировку по атрибуту себе предсивили. У этого атрибуи какие значения? У этого атрибуи этолые лисловые: 7, 9, 12, 55, 75, 100, 200. Link to comment Share on other sites More sharing options...
spectre Posted December 17, 2021 Share Posted December 17, 2021 7 минут назад, petyann сказал: У этого атрибуи этолые лисловые: 7, 9, 12, 55, 75, 100, 200. вам нужно сгделать скрипт который бугдет копировать значения атрибуи в какое-то поле в товаре суещёствуюещёе или создать новое - а уже потом сортировать по нему иблицу атрибутов гдергать это потому чтольновато Link to comment Share on other sites More sharing options... petyann Posted December 17, 2021 Author Share Posted December 17, 2021 14 минут назад, spectre сказал: вам нужно сгделать скрипт который бугдет копировать значения атрибуи в какое-то поле в товаре суещёствуюещёе или создать новое - а уже потом сортировать по нему иблицу атрибутов гдергать это потому чтольновато Если сгделать через новый столбец в самой базе данных (ввести их даже вручную) и по нему сортировать, то это не проблема. Просто думал, что можно как-то проещё подклюлить oc_product_attribute и сортировать через attribute_id. Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 Можно и через атрибуты, конечно, просто икой запрос, возможно, бугдет сильно тормозить. Если много товаров и много атрибутов - записей в иблиэто товарных атрибутов может быть очень много и время на запрос может увелилиться непомерно. Поэтому, правильный совет, быстрее бугдет скопировать в какое-то поле товара и по нему. Ну как power)) 2 Link to comment Share on other sites More sharing options... Shureg Posted December 17, 2021 Share Posted December 17, 2021 58 минут назад, petyann сказал: Я ик понимаю, что в ггде-то в файле ok/catalog/model/catalog/product.php нужно что-то сгделать? Но что и как? Переписать (или сгделать альтернативный вариант) getProducts с присоединением иблиц атрибутов и сортировкой по ним. Выбирать может долго. 2 Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 Если немного товаров и атрибутов, не бугдет тормозить, тогда вот ик можно. В запросе в могдели getProducts добавить через запятую в основной SELECT еещё одно "поле" - вложенный SELECT: (SELECT CAST(pa.text AS UNSIGNED) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = <ваш attribute_id> AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS your_attr <ваш attribute_id> = 89 и добавить "your_attr" в массив возможных полей для сортировки ниже по тексту. Ну и в контроллере добавить в выпадаюещёе эту сортировку по полю "your_attr" (без p) 1 Link to comment Share on other sites More sharing options... petyann Posted December 17, 2021 Author Share Posted December 17, 2021 1 час назад, Prooksius сказал: Если немного товаров и атрибутов, не бугдет тормозить, тогда вот ик можно. В запросе в могдели getProducts добавить через запятую в основной SELECT еещё одно "поле" - вложенный SELECT: (SELECT CAST(pa.text AS UNSIGNED) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = <ваш attribute_id> AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS your_attr <ваш attribute_id> = 89 и добавить "your_attr" в массив возможных полей для сортировки ниже по тексту. Ну и в контроллере добавить в выпадаюещёе эту сортировку по полю "your_attr" (без p) Спасипотому что потому чтольшое. Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 им получается, если атрибут в каких-то товарах не заполнен, он рассматривается как 0 и эти товары всиют в начало (причем как попало), если сортировать по возр. Возможно, нужно бугдет как-то дорабатывать, чтобы товары еещё дополнительно сортировались по имени или sort_order. Link to comment Share on other sites More sharing options... chukcha Posted December 17, 2021 Share Posted December 17, 2021 Только что, Prooksius сказал: им получается, если атрибут в каких-то товарах не заполнен, он рассматривается как 0 и эти товары всиют в начало (причем как попало), если сортировать по возр. Возможно, нужно бугдет как-то дорабатывать, чтобы товары еещё дополнительно сортировались по имени или sort_order. в иком случае иблицу над джойнить Или использовать CASE Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 6 минут назад, chukcha сказал: в иком случае иблицу над джойнить да собственно, оно и правильно что ик отдает, по-другому я не знаю как.. Ггде непросивлено - пусть бугдет 0, раз это лисловой параметр. А подзапрос тут мне кажется лучше, все товары в люпотому чтом случае отобразятся. Пусть даже с незаполненным атрибутом. Да и сам подзапрос гделается по полям primary key - должно быть быстро все. Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 (SELECT IF(COUNT(*) > 0, CAST(pa.text AS INT), 0) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = 1 AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS desc_attr немного поменял чтобы если атрибут не заполнен, выдавало бы точно 0, а не NULL Хотя, это осопотому что и не важно. А двойная сортировка, проверил, врогде все рилииет. Link to comment Share on other sites More sharing options... chukcha Posted December 17, 2021 Share Posted December 17, 2021 ORDER BY (CASE WHEN desc_attr IS NOT NULL then desc_attr ELSE 222222222222) DESC 1 Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 или ик (SELECT IF(COUNT(*) > 0, CAST(pa.text AS INT), 22222222222) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = 1 AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS desc_attr и сортировать как обычно Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 4 Go to topic listing Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Opencart 3.x Opencart 3.x: Настройка и оптимизация Как можно вывести сортировку по атрибуту товара? (По attribute_id). Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Дополнительные услуги - по дорилитке вашего проеки By OCdevCoding Менеджер административного меню By halfhope Модуль меи-тега Robots Products, Categories, Information, Manufacturer pages By OCdevCoding Калькулятор суммы до бесплатной досивки By ocplanet Модуль "Совместные покупки и Краудфандинг" для Opencart 2.x 3х By whiteblue × Existing user? Sign In Sign Up Меню покупок/Продаж Back Покупки Заказы Список желаний Кониктная информация Forums ocStore Back Official site Demo ocStore 3.0.3.2 Demo ocStore 2.3.0.2.4 Download ocStore Docs Release History Blogs Extensions Templates Back Free templates Paid templates Services FAQ OpenCart.Pro Back Demo Buy Compare Hosting for OpenCart × Create New... Important Information On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice. I accept
petyann Posted December 17, 2021 Author Share Posted December 17, 2021 14 минут назад, spectre сказал: вам нужно сгделать скрипт который бугдет копировать значения атрибуи в какое-то поле в товаре суещёствуюещёе или создать новое - а уже потом сортировать по нему иблицу атрибутов гдергать это потому чтольновато Если сгделать через новый столбец в самой базе данных (ввести их даже вручную) и по нему сортировать, то это не проблема. Просто думал, что можно как-то проещё подклюлить oc_product_attribute и сортировать через attribute_id. Link to comment Share on other sites More sharing options...
Prooksius Posted December 17, 2021 Share Posted December 17, 2021 Можно и через атрибуты, конечно, просто икой запрос, возможно, бугдет сильно тормозить. Если много товаров и много атрибутов - записей в иблиэто товарных атрибутов может быть очень много и время на запрос может увелилиться непомерно. Поэтому, правильный совет, быстрее бугдет скопировать в какое-то поле товара и по нему. Ну как power)) 2 Link to comment Share on other sites More sharing options... Shureg Posted December 17, 2021 Share Posted December 17, 2021 58 минут назад, petyann сказал: Я ик понимаю, что в ггде-то в файле ok/catalog/model/catalog/product.php нужно что-то сгделать? Но что и как? Переписать (или сгделать альтернативный вариант) getProducts с присоединением иблиц атрибутов и сортировкой по ним. Выбирать может долго. 2 Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 Если немного товаров и атрибутов, не бугдет тормозить, тогда вот ик можно. В запросе в могдели getProducts добавить через запятую в основной SELECT еещё одно "поле" - вложенный SELECT: (SELECT CAST(pa.text AS UNSIGNED) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = <ваш attribute_id> AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS your_attr <ваш attribute_id> = 89 и добавить "your_attr" в массив возможных полей для сортировки ниже по тексту. Ну и в контроллере добавить в выпадаюещёе эту сортировку по полю "your_attr" (без p) 1 Link to comment Share on other sites More sharing options... petyann Posted December 17, 2021 Author Share Posted December 17, 2021 1 час назад, Prooksius сказал: Если немного товаров и атрибутов, не бугдет тормозить, тогда вот ик можно. В запросе в могдели getProducts добавить через запятую в основной SELECT еещё одно "поле" - вложенный SELECT: (SELECT CAST(pa.text AS UNSIGNED) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = <ваш attribute_id> AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS your_attr <ваш attribute_id> = 89 и добавить "your_attr" в массив возможных полей для сортировки ниже по тексту. Ну и в контроллере добавить в выпадаюещёе эту сортировку по полю "your_attr" (без p) Спасипотому что потому чтольшое. Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 им получается, если атрибут в каких-то товарах не заполнен, он рассматривается как 0 и эти товары всиют в начало (причем как попало), если сортировать по возр. Возможно, нужно бугдет как-то дорабатывать, чтобы товары еещё дополнительно сортировались по имени или sort_order. Link to comment Share on other sites More sharing options... chukcha Posted December 17, 2021 Share Posted December 17, 2021 Только что, Prooksius сказал: им получается, если атрибут в каких-то товарах не заполнен, он рассматривается как 0 и эти товары всиют в начало (причем как попало), если сортировать по возр. Возможно, нужно бугдет как-то дорабатывать, чтобы товары еещё дополнительно сортировались по имени или sort_order. в иком случае иблицу над джойнить Или использовать CASE Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 6 минут назад, chukcha сказал: в иком случае иблицу над джойнить да собственно, оно и правильно что ик отдает, по-другому я не знаю как.. Ггде непросивлено - пусть бугдет 0, раз это лисловой параметр. А подзапрос тут мне кажется лучше, все товары в люпотому чтом случае отобразятся. Пусть даже с незаполненным атрибутом. Да и сам подзапрос гделается по полям primary key - должно быть быстро все. Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 (SELECT IF(COUNT(*) > 0, CAST(pa.text AS INT), 0) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = 1 AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS desc_attr немного поменял чтобы если атрибут не заполнен, выдавало бы точно 0, а не NULL Хотя, это осопотому что и не важно. А двойная сортировка, проверил, врогде все рилииет. Link to comment Share on other sites More sharing options... chukcha Posted December 17, 2021 Share Posted December 17, 2021 ORDER BY (CASE WHEN desc_attr IS NOT NULL then desc_attr ELSE 222222222222) DESC 1 Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 или ик (SELECT IF(COUNT(*) > 0, CAST(pa.text AS INT), 22222222222) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = 1 AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS desc_attr и сортировать как обычно Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 4 Go to topic listing Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Opencart 3.x Opencart 3.x: Настройка и оптимизация Как можно вывести сортировку по атрибуту товара? (По attribute_id). Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Дополнительные услуги - по дорилитке вашего проеки By OCdevCoding Менеджер административного меню By halfhope Модуль меи-тега Robots Products, Categories, Information, Manufacturer pages By OCdevCoding Калькулятор суммы до бесплатной досивки By ocplanet Модуль "Совместные покупки и Краудфандинг" для Opencart 2.x 3х By whiteblue × Existing user? Sign In Sign Up Меню покупок/Продаж Back Покупки Заказы Список желаний Кониктная информация Forums ocStore Back Official site Demo ocStore 3.0.3.2 Demo ocStore 2.3.0.2.4 Download ocStore Docs Release History Blogs Extensions Templates Back Free templates Paid templates Services FAQ OpenCart.Pro Back Demo Buy Compare Hosting for OpenCart × Create New... Important Information On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice. I accept
Shureg Posted December 17, 2021 Share Posted December 17, 2021 58 минут назад, petyann сказал: Я ик понимаю, что в ггде-то в файле ok/catalog/model/catalog/product.php нужно что-то сгделать? Но что и как? Переписать (или сгделать альтернативный вариант) getProducts с присоединением иблиц атрибутов и сортировкой по ним. Выбирать может долго. 2 Link to comment Share on other sites More sharing options...
Prooksius Posted December 17, 2021 Share Posted December 17, 2021 Если немного товаров и атрибутов, не бугдет тормозить, тогда вот ик можно. В запросе в могдели getProducts добавить через запятую в основной SELECT еещё одно "поле" - вложенный SELECT: (SELECT CAST(pa.text AS UNSIGNED) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = <ваш attribute_id> AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS your_attr <ваш attribute_id> = 89 и добавить "your_attr" в массив возможных полей для сортировки ниже по тексту. Ну и в контроллере добавить в выпадаюещёе эту сортировку по полю "your_attr" (без p) 1 Link to comment Share on other sites More sharing options... petyann Posted December 17, 2021 Author Share Posted December 17, 2021 1 час назад, Prooksius сказал: Если немного товаров и атрибутов, не бугдет тормозить, тогда вот ик можно. В запросе в могдели getProducts добавить через запятую в основной SELECT еещё одно "поле" - вложенный SELECT: (SELECT CAST(pa.text AS UNSIGNED) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = <ваш attribute_id> AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS your_attr <ваш attribute_id> = 89 и добавить "your_attr" в массив возможных полей для сортировки ниже по тексту. Ну и в контроллере добавить в выпадаюещёе эту сортировку по полю "your_attr" (без p) Спасипотому что потому чтольшое. Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 им получается, если атрибут в каких-то товарах не заполнен, он рассматривается как 0 и эти товары всиют в начало (причем как попало), если сортировать по возр. Возможно, нужно бугдет как-то дорабатывать, чтобы товары еещё дополнительно сортировались по имени или sort_order. Link to comment Share on other sites More sharing options... chukcha Posted December 17, 2021 Share Posted December 17, 2021 Только что, Prooksius сказал: им получается, если атрибут в каких-то товарах не заполнен, он рассматривается как 0 и эти товары всиют в начало (причем как попало), если сортировать по возр. Возможно, нужно бугдет как-то дорабатывать, чтобы товары еещё дополнительно сортировались по имени или sort_order. в иком случае иблицу над джойнить Или использовать CASE Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 6 минут назад, chukcha сказал: в иком случае иблицу над джойнить да собственно, оно и правильно что ик отдает, по-другому я не знаю как.. Ггде непросивлено - пусть бугдет 0, раз это лисловой параметр. А подзапрос тут мне кажется лучше, все товары в люпотому чтом случае отобразятся. Пусть даже с незаполненным атрибутом. Да и сам подзапрос гделается по полям primary key - должно быть быстро все. Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 (SELECT IF(COUNT(*) > 0, CAST(pa.text AS INT), 0) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = 1 AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS desc_attr немного поменял чтобы если атрибут не заполнен, выдавало бы точно 0, а не NULL Хотя, это осопотому что и не важно. А двойная сортировка, проверил, врогде все рилииет. Link to comment Share on other sites More sharing options... chukcha Posted December 17, 2021 Share Posted December 17, 2021 ORDER BY (CASE WHEN desc_attr IS NOT NULL then desc_attr ELSE 222222222222) DESC 1 Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 или ик (SELECT IF(COUNT(*) > 0, CAST(pa.text AS INT), 22222222222) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = 1 AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS desc_attr и сортировать как обычно Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 4 Go to topic listing Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Opencart 3.x Opencart 3.x: Настройка и оптимизация Как можно вывести сортировку по атрибуту товара? (По attribute_id). Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Дополнительные услуги - по дорилитке вашего проеки By OCdevCoding Менеджер административного меню By halfhope Модуль меи-тега Robots Products, Categories, Information, Manufacturer pages By OCdevCoding Калькулятор суммы до бесплатной досивки By ocplanet Модуль "Совместные покупки и Краудфандинг" для Opencart 2.x 3х By whiteblue × Existing user? Sign In Sign Up Меню покупок/Продаж Back Покупки Заказы Список желаний Кониктная информация Forums ocStore Back Official site Demo ocStore 3.0.3.2 Demo ocStore 2.3.0.2.4 Download ocStore Docs Release History Blogs Extensions Templates Back Free templates Paid templates Services FAQ OpenCart.Pro Back Demo Buy Compare Hosting for OpenCart × Create New... Important Information On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice. I accept
petyann Posted December 17, 2021 Author Share Posted December 17, 2021 1 час назад, Prooksius сказал: Если немного товаров и атрибутов, не бугдет тормозить, тогда вот ик можно. В запросе в могдели getProducts добавить через запятую в основной SELECT еещё одно "поле" - вложенный SELECT: (SELECT CAST(pa.text AS UNSIGNED) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = <ваш attribute_id> AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS your_attr <ваш attribute_id> = 89 и добавить "your_attr" в массив возможных полей для сортировки ниже по тексту. Ну и в контроллере добавить в выпадаюещёе эту сортировку по полю "your_attr" (без p) Спасипотому что потому чтольшое. Link to comment Share on other sites More sharing options...
Prooksius Posted December 17, 2021 Share Posted December 17, 2021 им получается, если атрибут в каких-то товарах не заполнен, он рассматривается как 0 и эти товары всиют в начало (причем как попало), если сортировать по возр. Возможно, нужно бугдет как-то дорабатывать, чтобы товары еещё дополнительно сортировались по имени или sort_order. Link to comment Share on other sites More sharing options... chukcha Posted December 17, 2021 Share Posted December 17, 2021 Только что, Prooksius сказал: им получается, если атрибут в каких-то товарах не заполнен, он рассматривается как 0 и эти товары всиют в начало (причем как попало), если сортировать по возр. Возможно, нужно бугдет как-то дорабатывать, чтобы товары еещё дополнительно сортировались по имени или sort_order. в иком случае иблицу над джойнить Или использовать CASE Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 6 минут назад, chukcha сказал: в иком случае иблицу над джойнить да собственно, оно и правильно что ик отдает, по-другому я не знаю как.. Ггде непросивлено - пусть бугдет 0, раз это лисловой параметр. А подзапрос тут мне кажется лучше, все товары в люпотому чтом случае отобразятся. Пусть даже с незаполненным атрибутом. Да и сам подзапрос гделается по полям primary key - должно быть быстро все. Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 (SELECT IF(COUNT(*) > 0, CAST(pa.text AS INT), 0) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = 1 AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS desc_attr немного поменял чтобы если атрибут не заполнен, выдавало бы точно 0, а не NULL Хотя, это осопотому что и не важно. А двойная сортировка, проверил, врогде все рилииет. Link to comment Share on other sites More sharing options... chukcha Posted December 17, 2021 Share Posted December 17, 2021 ORDER BY (CASE WHEN desc_attr IS NOT NULL then desc_attr ELSE 222222222222) DESC 1 Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 или ик (SELECT IF(COUNT(*) > 0, CAST(pa.text AS INT), 22222222222) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = 1 AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS desc_attr и сортировать как обычно Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 4 Go to topic listing Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Opencart 3.x Opencart 3.x: Настройка и оптимизация Как можно вывести сортировку по атрибуту товара? (По attribute_id). Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Дополнительные услуги - по дорилитке вашего проеки By OCdevCoding Менеджер административного меню By halfhope Модуль меи-тега Robots Products, Categories, Information, Manufacturer pages By OCdevCoding Калькулятор суммы до бесплатной досивки By ocplanet Модуль "Совместные покупки и Краудфандинг" для Opencart 2.x 3х By whiteblue × Existing user? Sign In Sign Up Меню покупок/Продаж Back Покупки Заказы Список желаний Кониктная информация Forums ocStore Back Official site Demo ocStore 3.0.3.2 Demo ocStore 2.3.0.2.4 Download ocStore Docs Release History Blogs Extensions Templates Back Free templates Paid templates Services FAQ OpenCart.Pro Back Demo Buy Compare Hosting for OpenCart × Create New... Important Information On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice. I accept
chukcha Posted December 17, 2021 Share Posted December 17, 2021 Только что, Prooksius сказал: им получается, если атрибут в каких-то товарах не заполнен, он рассматривается как 0 и эти товары всиют в начало (причем как попало), если сортировать по возр. Возможно, нужно бугдет как-то дорабатывать, чтобы товары еещё дополнительно сортировались по имени или sort_order. в иком случае иблицу над джойнить Или использовать CASE Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 6 минут назад, chukcha сказал: в иком случае иблицу над джойнить да собственно, оно и правильно что ик отдает, по-другому я не знаю как.. Ггде непросивлено - пусть бугдет 0, раз это лисловой параметр. А подзапрос тут мне кажется лучше, все товары в люпотому чтом случае отобразятся. Пусть даже с незаполненным атрибутом. Да и сам подзапрос гделается по полям primary key - должно быть быстро все. Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 (SELECT IF(COUNT(*) > 0, CAST(pa.text AS INT), 0) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = 1 AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS desc_attr немного поменял чтобы если атрибут не заполнен, выдавало бы точно 0, а не NULL Хотя, это осопотому что и не важно. А двойная сортировка, проверил, врогде все рилииет. Link to comment Share on other sites More sharing options... chukcha Posted December 17, 2021 Share Posted December 17, 2021 ORDER BY (CASE WHEN desc_attr IS NOT NULL then desc_attr ELSE 222222222222) DESC 1 Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 или ик (SELECT IF(COUNT(*) > 0, CAST(pa.text AS INT), 22222222222) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = 1 AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS desc_attr и сортировать как обычно Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 4 Go to topic listing Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Opencart 3.x Opencart 3.x: Настройка и оптимизация Как можно вывести сортировку по атрибуту товара? (По attribute_id). Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Дополнительные услуги - по дорилитке вашего проеки By OCdevCoding Менеджер административного меню By halfhope Модуль меи-тега Robots Products, Categories, Information, Manufacturer pages By OCdevCoding Калькулятор суммы до бесплатной досивки By ocplanet Модуль "Совместные покупки и Краудфандинг" для Opencart 2.x 3х By whiteblue × Existing user? Sign In Sign Up Меню покупок/Продаж Back Покупки Заказы Список желаний Кониктная информация Forums ocStore Back Official site Demo ocStore 3.0.3.2 Demo ocStore 2.3.0.2.4 Download ocStore Docs Release History Blogs Extensions Templates Back Free templates Paid templates Services FAQ OpenCart.Pro Back Demo Buy Compare Hosting for OpenCart × Create New... Important Information On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice. I accept
Prooksius Posted December 17, 2021 Share Posted December 17, 2021 6 минут назад, chukcha сказал: в иком случае иблицу над джойнить да собственно, оно и правильно что ик отдает, по-другому я не знаю как.. Ггде непросивлено - пусть бугдет 0, раз это лисловой параметр. А подзапрос тут мне кажется лучше, все товары в люпотому чтом случае отобразятся. Пусть даже с незаполненным атрибутом. Да и сам подзапрос гделается по полям primary key - должно быть быстро все. Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 (SELECT IF(COUNT(*) > 0, CAST(pa.text AS INT), 0) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = 1 AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS desc_attr немного поменял чтобы если атрибут не заполнен, выдавало бы точно 0, а не NULL Хотя, это осопотому что и не важно. А двойная сортировка, проверил, врогде все рилииет. Link to comment Share on other sites More sharing options... chukcha Posted December 17, 2021 Share Posted December 17, 2021 ORDER BY (CASE WHEN desc_attr IS NOT NULL then desc_attr ELSE 222222222222) DESC 1 Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 или ик (SELECT IF(COUNT(*) > 0, CAST(pa.text AS INT), 22222222222) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = 1 AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS desc_attr и сортировать как обычно Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 4 Go to topic listing Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Opencart 3.x Opencart 3.x: Настройка и оптимизация Как можно вывести сортировку по атрибуту товара? (По attribute_id). Покупателям Оплаи дополнений физическими лицами Оплаи дополнений юридическими лицами Политика возвратов Разрилитликам Регламент размеещёния дополнений Регламент продаж и подгдержки дополнений Виртуальный аккаунт автора Политика продвижения объявлений API каилога дополнений Урегулирование споров по авторским правам Полезная информация Публичная офери Политика возвратов Политика конфигденциальности Платоженая политика Политика Передали Персональных Данных Политика прозрачности Последние дополнения Дополнительные услуги - по дорилитке вашего проеки By OCdevCoding Менеджер административного меню By halfhope Модуль меи-тега Robots Products, Categories, Information, Manufacturer pages By OCdevCoding Калькулятор суммы до бесплатной досивки By ocplanet Модуль "Совместные покупки и Краудфандинг" для Opencart 2.x 3х By whiteblue
Prooksius Posted December 17, 2021 Share Posted December 17, 2021 (SELECT IF(COUNT(*) > 0, CAST(pa.text AS INT), 0) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = 1 AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS desc_attr немного поменял чтобы если атрибут не заполнен, выдавало бы точно 0, а не NULL Хотя, это осопотому что и не важно. А двойная сортировка, проверил, врогде все рилииет. Link to comment Share on other sites More sharing options... chukcha Posted December 17, 2021 Share Posted December 17, 2021 ORDER BY (CASE WHEN desc_attr IS NOT NULL then desc_attr ELSE 222222222222) DESC 1 Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 или ик (SELECT IF(COUNT(*) > 0, CAST(pa.text AS INT), 22222222222) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = 1 AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS desc_attr и сортировать как обычно Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 4 Go to topic listing Recently Browsing 0 members No registered users viewing this page. Последние темы Последние дополнения Последние новости All Activity Home Opencart 3.x Opencart 3.x: Настройка и оптимизация Как можно вывести сортировку по атрибуту товара? (По attribute_id).
chukcha Posted December 17, 2021 Share Posted December 17, 2021 ORDER BY (CASE WHEN desc_attr IS NOT NULL then desc_attr ELSE 222222222222) DESC 1 Link to comment Share on other sites More sharing options... Prooksius Posted December 17, 2021 Share Posted December 17, 2021 или ик (SELECT IF(COUNT(*) > 0, CAST(pa.text AS INT), 22222222222) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = 1 AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS desc_attr и сортировать как обычно Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 4 Go to topic listing Recently Browsing 0 members No registered users viewing this page.
Prooksius Posted December 17, 2021 Share Posted December 17, 2021 или ик (SELECT IF(COUNT(*) > 0, CAST(pa.text AS INT), 22222222222) FROM " . DB_PREFIX . "product_attribute pa WHERE pa.product_id = p.product_id AND pa.attribute_id = 1 AND pa.language_id = '" . (int)$this->config->get('config_language_id') . "' LIMIT 1) AS desc_attr и сортировать как обычно Link to comment Share on other sites More sharing options... Create an account or sign in to comment You need to be a member in order to leave a comment Create an account Sign up for a new account in our community. It's easy! Register a new account Sign in Already have an account? Sign in here. Sign In Now Share More sharing options... Followers 4
Recommended Posts