MS2 вывод по разнице price-old_price в процентах

30
Привет!
Переношу эту задачу из раздела вопросы.

Мне нужно вывести товары minisop2 отсортированные по проценту разницы price и old_price

т.е.

[[!pdoPage?
				&element=`msProducts`
				&tpl=`tpl`
				&sortby=`этот_процент`
				&sortdir=`DESC`
			]]
для получения этого процента в товаре я использую сниппет [[!procent]]

<?php
$price2 = str_replace(" ","",$modx->resource->get('price'));
$old_price2 = str_replace(" ","",$modx->resource->get('old_price'));
$pricevariations = $old_price2 - $price2;

if($old_price2 > 0){
  echo '<div class="procent"><span>'.number_format(round(($pricevariations / $old_price2) * 100), 0, '.', ' ') .'</span></div>';
}
чтобы этот же процент получить в категории товаров пришлось сниппет немного изменить

<?php
$price2 = str_replace(" ","",empty($price) ? 0 : $price);
$old_price2 = str_replace(" ","",empty($old_price) ? 0 : $old_price);
if($old_price2 > 0){
  return '<div class="procent"><span>'.number_format(round((($old_price2 - $price2) / $old_price2) * 100), 0, '.', ' ') .'</span></div>';
} 
return '';
и его вызов
[[!procent_category? &price=`[[+price]]` &old_price=`[[+old_price]]`]]
Это работает. Но теперь нужно сделать вывод товара отсортированного по возрастанию или убыванию по этому проценту и, например, не показывать товары, где процент меньше 10%.
Проще говоря, мне нужно работать с этой цифрой, как с ценой.

Как я понимаю и мне подсказывают это число нужно высчитывать и записывать в бд сразу при сохранении товара. В магазине около 1000 товаров, их пересохранять нет желания.

Хотелось бы решение в виде плагина или пошаговой инструкции.
Доступ к сайту не даю.

Готов выслушать Ваши предложения…
Виталий
Виталий
21 декабря 2016, 09:17
modx.pro
2 005