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

Привет!
Я учусь и появилась следующая задача:
Вывести товары 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%.

Кто-нибудь решал подобную задачу? Гуру, подскажите!

пробовал еще такую конструкцию, но по плейсхолдеру pricevariations – сортировки не происходит
[[+old_price:isnot=`0`:then=`[[+old_price:replace=` ==`:subtract=`[[+price:replace=` ==`]]`:div=`[[+old_price:replace=` ==`]]`:mpy=`100`:toPlaceholder=`pricevariations`]]`:else=``]]
Виталий
10 декабря 2016, 08:32
modx.pro
2
1 742
0

Комментарии: 3

Евгений Webinmd
10 декабря 2016, 13:00
0
можно написать плагин на событие сохранения формы чтобы брались значения цен и записывались ваши вычисления либо в TV поле либо в minishop поле и потом по этому полю сортировать, это и быстрее в итоге выйдет
    Виталий
    10 декабря 2016, 13:07
    0
    Да, я тоже понимаю, что эти вычисления нужно писать в базу данных, но как это сделать не знаю… А как быть с уже добавленными товарами? Пересохранять?
    Виталий
    13 декабря 2016, 09:56
    0
    Вопрос не решен. По-прежнему есть необходимость это сделать. Неужели это ненужная функция? Готов в разумных пределах профинансировать написание плагина!
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      3