[Помогите] Сортировку товаров по просмотрам

Тема в разделе "OpenCart", создана пользователем vladiha, 22 дек 2013.

  1. vladiha

    vladiha

    Регистрация:
    18 июн 2013
    Сообщения:
    9
    Симпатии:
    0
    Добрый день.

    Помогите пожалуйста.

    Как сделать сортировку товаров по просмотрам за последние 3 дня?

    Спасибо.
     
  2. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
    За последние 3 дня врядли Вам кто то подскажет, так как информацыя о том когда был просмотр товара и в которое время ... нигде не фиксируется опенкартом.
    А за просмотрами сортировку организовать легко, начните с контролера категорий
     
    vladiha нравится это.
  3. vladiha

    vladiha

    Регистрация:
    18 июн 2013
    Сообщения:
    9
    Симпатии:
    0
    Спасибо за быстрый ответ.

    Код:
    'sort'  => 'p.viewed',
    Сделал такой запрос , но товары выводиться не по просмотрам.
    Где ошибка?
     
  4. nix

    nix php, MySQL, UNIX, MikroTik ROSAPI

    Регистрация:
    16 янв 2013
    Сообщения:
    1.000
    Симпатии:
    889
    не знаю где и в какой массив Вы ето вписали но ето явно не запрос и тем боле одной строчки маловато )
    начинайте смотреть catalog/controller/product/category.php
    а именно в начало файла и потом начиная с $this->data['sorts'] = array();
     
  5. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.050
    Симпатии:
    777
    Если б это был фреймворк, может, такого бы и хватило. А так нужно редактировать модель /catalog/model/catalog/product.php.
    Контроллер, кстати, можно было не трогать. В него нужно вносить изменения только, если вы хотите добавить сортировку по просмотрам к списку сортировок на странице.

    В /catalog/model/catalog/product.php функция getProducts. Блок кода внутри
    PHP:
    if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
    Добавляете ко всем ORDER BY ваш p.viewed.

    Это если всегда нужно сортировать по просмотрам. Если нужно добавить эту сортировку к списку выбора, то в модели p.viewed добавляете в массив $sort_data (чуть выше предыдущего блока).
    А в контроллере /catalog/controller/product/category.php находите и копируете этот код:
    PHP:
    $this->data['sorts'][] = array(
                    
    'text'  => $this->language->get('text_model_desc'),
                    
    'value' => 'p.model-DESC',
                    
    'href'  => $this->url->link('product/category''path=' $this->request->get['path'] . '&sort=p.model&order=DESC' $url)
                );
    И заменяете text_model_desc - на текст описания сортировки (нужно создать языковую переменную в соответствующем языковом файле).
    p.model заменяете на p.viewed
    Потом копируете ещё раз и заменяете DESC на ASC (ASC - по возростанию, DESC - по убыванию).
     
  6. stas_one

    stas_one

    Регистрация:
    4 июн 2013
    Сообщения:
    23
    Симпатии:
    0
    Сделал все как Вы написали, но у меня по прежнему отображается сортировка: "по-умолчанию"
    что я мог упустить?
     
  7. Dotrox

    Dotrox Команда форума

    Регистрация:
    27 ноя 2012
    Сообщения:
    2.050
    Симпатии:
    777
    Так оно должно было просто добавиться в список на странице. У вас есть выпадающий список с вариантами сортировки? В нём должны были появиться новые пункты.
     
  8. vladiha

    vladiha

    Регистрация:
    18 июн 2013
    Сообщения:
    9
    Симпатии:
    0
    Нашел решение

    Нужно было добавить в /catalog/model/catalog/product.php

    Код:
    Где
    
    $sort_data = array(
    
    Добавить
    
    'viewed',
    
    И будет работать сортировка по просмотрам :Smile: