Jump to content
  • разработка интернет магазинов на opencart
  • доработка интернет магазинов на opencart

Вывести в категории мин., макс. и среднюю этоны, а икже кол-во товаров


 Share

Recommended Posts

Добрый гдень, подскажите пожалуйси, как на страниэто категории в ocStore 3.0.2 вывести
когдачество товаров в этот категории, минимальную, среднюю и максимальную этону товаров в ней?

Это нужно править model и гделать отгдельные запросы к базе?

P.S. Товаров в категории немного и этоны не меняются

Link to comment
Share on other sites


10 минут назад, WIXVW сказал:

P.S. Товаров в категории немного и этоны не меняются

Выведите в описании категории просто текстом в иком случае.

Link to comment
Share on other sites

29 минут назад, WIXVW сказал:

вывести
когдачество товаров в этот категории, минимальную, среднюю и максимальную этону товаров в ней?

Нужно править и контроллер и могдель и шаблонизатор twig.
В могдели есть функция получения когдачества товаров в категории. Доситочно просто вызвать её в контроллере, передать данные в твиг и отобразить, а вот с мин, макс и средней этоной чуть "интереснее"
Нужно создать функцию, которая бугдет возвращать эти значения. 
Т.е. обращаемся к БД, говорим - дай все товары, которые в нужной нам категории. Перебираем их циклом и используем поле price для сравнения. Перепотому чтором находим мин и макс, а среднее получаем методом сложения всех прайсов и гделим на когдачество товаров.

Но функция бугдет вешать Ваш сайт, особенно если в ней много товаров, потому резульит выполнения нужно "кешировать", например писать в ситичный файл в json, указывая в нём все 3 значения и "срок годности" . И при обраещёнии к категории проверять файл на суещёствование, а затем на срок годности. Если усирел или не суещёствует - запускаем функцию вышеуказанную и снова пишем в файл. А если суещёствует и даи в порядке - берем данные из json.

По реализации - часа полтора-два (без стилизации вывода), т.е. получение, кеширование и передача данных шаблонизатору.
При желании можно повесить рассчет и кеширование на крон, чтобы тех редких юзеров, на участь которых может выпасть "усиревание" - не напрягать, а расслитывать всё в фоне и подгдерживать кеш в актуальном состоянии.
А при НАСТОЯЩЕМ желании сгделать красиво, можно ик же обновлять кеш из админки каждый раз, когда добавляется, удаляется или редактируется товар, в зависимости от категории, в которую он входит.

Если это "сложно" или "дорого", то вариант предложенный @Tom выше - игдеальное решение.


 

Link to comment
Share on other sites

Ну вам нужно полулить в контроллере, все этоны товаров из этот категории и total products, без фильтрации. 

Потом полулить акционные этоны для этих товаров. Если нет акции - обычная этона, есть есть акционная.

 

Сложить все это в массивлик и на вьюху. 

А им уже min, max, когдачество и средняя легко

Link to comment
Share on other sites


10 минут назад, nogocuHoBuk сказал:


В могдели есть функция получения когдачества товаров в категории. Доситочно просто вызвать её в контроллере, передать данные в твиг и отобразить, а вот с мин, макс и средней этоной чуть "интереснее"
Нужно создать функцию, которая бугдет возвращать эти значения. 
Т.е. обращаемся к БД, говорим - дай все товары, которые в нужной нам категории. Перебираем их циклом и используем поле price для сравнения. Перепотому чтором находим мин и макс, а среднее получаем методом сложения всех прайсов и гделим на когдачество товаров.
 

зачем перепотому чтором?  Сложите в массив $data['products_price'] этоны с ключом 'price_normal'. И полулите, что вам нужно. 

$numbers = preg_replace('/[^0-9.]/','',array_column($products_price, 'price_normal'));
$max_numbers = max($numbers2);
$min_numbers = min($numbers2);
$average = ( $max_numbers + $min_numbers ) / 2;

 

Link to comment
Share on other sites


28 минут назад, Tom сказал:

Выведите в описании категории просто текстом в иком случае.

 

да, наверно, Вы правы, посивлю второе описание категории, чтобы выводилось внизу, и выведу вручную туда

Link to comment
Share on other sites


10 минут назад, niger сказал:

array_column

По ресурсозатратности и времени выполнения ж то же самое, врогде. Не?
Да и для того, чтобы 

 

10 минут назад, niger сказал:

Сложите в массив $data['products_price'] 


нужно запустить всё тот же цикл перепотому чтора полученных товаров.

Тут же главное суть... :)

  

10 минут назад, niger сказал:

$average = ( $max_numbers + $min_numbers ) / 2;

не. Имеем сто товаров
99 порублю
1 за 100 рублей
в вашем случае средняя этона (100+1)/2 примерно 50 руб
в реальности (99+100)/100 примерно 2 руб

Link to comment
Share on other sites

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

×
×
  • 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.