Ответить Новая тема Новый опрос 
 Сортировка по размеру скидки (валюта/процент)
tgz
Новичок
Сообщений: 18
Регистрация: 18-04-2015


18-04-2015 09:10
В product-sort.tpl есть сортировка по цене

Код:
<option value="price:asc" {if $orderby eq 'price' AND $orderway eq 'asc'}selected="selected"{/if}>{l s='Цена: Сначала дешевые'}</option>

<option value="price:desc" {if $orderby eq 'price' AND $orderway eq 'desc'}selected="selected"{/if}>{l s='Цена: Сначала дорогие'}</option>


наверное должен быть value для скидки. Перебрал около десятка вариантов - не работает. Подскажите плз верный value кто знает


Сообщение отредактировано tgz 18-04-2015 10:11 ...
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


18-04-2015 11:29
Цитата:( tgz @ 18-04-2015 10:10 Смотреть сообщение )
наверное должен быть value для скидки.


Нет.
В коде шаблона по скидке сортировать невозможно. И невозможно отсортировать по скидке в самом запросе (т.к. итоговая цена вычисляется после запросов к БД).

Вариант с товарами для текущей страницы:
/controllers/front/CategoryController.php
после:
Код:
$this->cat_products = $this->category->getProducts($this->context->language->id, (int)$this->p, (int)$this->n, $this->orderBy, $this->orderWay);

добавить:
Код:
if (Tools::getValue('orderby') === 'reduction')
{
    foreach ($this->cat_products as &$row)
        $row['price_tmp'] = $row['price_without_reduction'] - $row['price'];
    
    if (Tools::getValue('orderway') === 'asc')
        uasort($this->cat_products, 'cmpPriceAsc');
    else
        uasort($this->cat_products, 'cmpPriceDesc');
}


после чего в запросах можно использовать:
Код:
http://ваш-магазин.ru/3-название-категории?orderby=reduction&orderway=desc
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
tgz
Новичок
Сообщений: 18
Регистрация: 18-04-2015


19-04-2015 04:47
Алекс, огромное спасибо за помощь!

На странице категорий это сработало (хотя и "не различает" валюту и процент, но так даже лучше).

Только вот new-products.tpl не хочет принимать это сортировку и вместо этого срабатывает сортировка по "name" :(
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Алекс


Администратор
Сообщений: 4516
Откуда: Красноярск
Регистрация: 29-05-2009


19-04-2015 12:01
Файл: /controllers/front/NewProductsController.php
после:
Код:
$this->addColorsToProductList($products);

добавить:
Код:
if (Tools::getValue('orderby') === 'reduction')
{
    foreach ($products as &$row)
        $row['price_tmp'] = $row['price_without_reduction'] - $row['price'];
    
    if (Tools::getValue('orderway') === 'asc')
        uasort($products, 'cmpPriceAsc');
    else
        uasort($products, 'cmpPriceDesc');
}
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
tgz
Новичок
Сообщений: 18
Регистрация: 18-04-2015


19-04-2015 12:44
Благодарю :good:
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Кирилл67
Новичок
Сообщений: 2
Регистрация: 16-11-2016


16-11-2016 02:07
У меня этот вариант не работает. преста 1.6.7. Подскажите пожалуйста решение
 
Вне форума
ПМ Отправить эл.сообщение 
Щелкните, и это сообщение будет добавлено в ваш ответ как цитата Цитировать этот ответ
Ответить Новая тема Новый опрос