Модуль "Акции" как показать только первые 4 товара?

Тема в разделе "Модули и дополнения", создана пользователем Bes, 21 ноя 2015.

  1. Bes

    Bes Пользователь

    Сообщения:
    57
    Симпатии:
    1
    Подскажите, как сделать, что бы в модуле "акции", при добавлении новых товаров, старые "уходили", а то первые 4-ре висят, а новые не добавляются. Как это реализовать на примере модуля "новые поступления"?

    www.besseller.ru
     
  2. optimlab

    optimlab Продвинутый пользователь

    Сообщения:
    792
    Симпатии:
    212
    Увеличить лимит в настройках модуля
     
  3. Bes

    Bes Пользователь

    Сообщения:
    57
    Симпатии:
    1
    Лимит отображает просто больше товара, а я именно про то, что бы новые товары заменяли старые, оставаясь видимые первые 4 товара и все.
     
  4. optimlab

    optimlab Продвинутый пользователь

    Сообщения:
    792
    Симпатии:
    212
    Тут вам придется сделать новый модуль из контроллера последние и акции... По сути откопировать акции под новым названием и добавить код из Последние.
     
  5. Bes

    Bes Пользователь

    Сообщения:
    57
    Симпатии:
    1
    До этого мне далековато((
     
  6. optimlab

    optimlab Продвинутый пользователь

    Сообщения:
    792
    Симпатии:
    212
    Ну тут или учиться, или ждать настроения опытного форумчанина, и заказать платную разработку..
     
  7. Romans

    Romans Administrator Команда форума

    Сообщения:
    1.340
    Симпатии:
    692
    в файле catalog\controller\module\special.php

    находим
    PHP:
                'sort'  => 'pd.name',
                
    'order' => 'ASC',

    и заменим на
    PHP:
                'sort'  => 'ps.product_special_id',
                
    'order' => 'DESC',

    в файле \catalog\model\catalog\product.php функция public function getProductSpecials
    находим
    PHP:
            $sort_data = array(
                
    'pd.name',
    и добавим
    PHP:
                'ps.product_special_id',

    в итоге получим сортировку по полю product_special_id в которой записывается id автоинкрементом, т.е увеличивается по ходу заполнения.
     
    Vlad нравится это.
  8. Bes

    Bes Пользователь

    Сообщения:
    57
    Симпатии:
    1
    Спасибо, все получилось!
     
  9. Bes

    Bes Пользователь

    Сообщения:
    57
    Симпатии:
    1
    Сейчас присмотрелся, теперь товар показывается самый последний, а не самый первый, как изначально. То есть новые поступления в "акциях" отображаются только в том случае, если товар (по своему названию) встал самым последним в этом разделе. Если не сложно, может возможно тогда вообще поменять, что бы он случайно отображался в этом окне на главной странице или это какие-то уже сложные коды нужны?(
     
  10. Ален

    Ален Эксперт

    Сообщения:
    2.052
    Симпатии:
    630
    последнии это и есть новые. Если к товару добавили акцию то он и будет показываться первым в модуле.
    Что у вас не так? Опишите нормально, чтобы не было путаницы.
     
  11. Bes

    Bes Пользователь

    Сообщения:
    57
    Симпатии:
    1
    Изначально, когда товару добавлял пункт акция, он отображался и в модуле акция тоже. Добавив больше товаров, увидел, что первый добавленный товар с акцией, так и остался первым в акции, а не сместился от вновь добавленного. С кодом выше, получилось иначе. Он стал отображать последний товар по названию, а не по дате. Дело в том, что при добавлении товара он автоматически сортируется по именам на самой странице акции. То есть, даже добавив новый товар, если у него название не самое последнее в списке, он не отобразится, а все так и будет отображаться который, самый последний в алфавитном порядке с конца.
    Так вот, у меня встречный вопрос, что бы не писать эти отображения, смещения и т.д., можно как-то сделать, что бы отображался случайный товар в акциях на главной странице, или вообще менялся через какое-то время? Если это сложно-реализуем, тогда оставим пока все как и есть...
     
  12. Ален

    Ален Эксперт

    Сообщения:
    2.052
    Симпатии:
    630
    а кто сказал что по дате? Написано же, что сортировка идет по полю product_special_id ... т.е не по полю ДАТА а по полю последнего добавленной акции.
    В алфавитно порядке сортируется если не делать изменения.

    Для случайного показа, надо запрос поменять немного.. напишу позже.
     
  13. Bes

    Bes Пользователь

    Сообщения:
    57
    Симпатии:
    1
    А для смены изображения, через какое-то определенно заданное время, например секунд 10-15?
    Но все равно спасибо, буду ждать.
     
  14. Vlad

    Vlad Эксперт

    Сообщения:
    3.906
    Симпатии:
    938
    аппетиты по ходу увеличиваются!!! Сначало одно, потом другое и теперь третье...
     
  15. Ален

    Ален Эксперт

    Сообщения:
    2.052
    Симпатии:
    630
  16. Bes

    Bes Пользователь

    Сообщения:
    57
    Симпатии:
    1
    Все осталось так же, ничего не поменялось
    Это в special.php
    Код:
    $filter_data = array(
                'sort'  => 'RAND()',
                'order' => 'DESC',
                'start' => 0,
                'limit' => $setting['limit']
    А это в product.php
    Код:
    public function getProductSpecials($data = array()) {
            $sql = "SELECT DISTINCT ps.product_id, (SELECT AVG(rating) FROM " . DB_PREFIX . "review r1 WHERE r1.product_id = ps.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM " . DB_PREFIX . "product_special ps LEFT JOIN " . DB_PREFIX . "product p ON (ps.product_id = p.product_id) LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) LEFT JOIN " . DB_PREFIX . "product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '" . (int)$this->config->get('config_store_id') . "' AND ps.customer_group_id = '" . (int)$this->config->get('config_customer_group_id') . "' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) GROUP BY ps.product_id";
    
            $sort_data = array(
                'pd.name',
    'RAND()',
                'p.model',
                'ps.price',
                'rating',
                'p.sort_order'
            );
     
    Bkmz нравится это.
  17. Romans

    Romans Administrator Команда форума

    Сообщения:
    1.340
    Симпатии:
    692
    Обновляйте кеш модификатора. Обычно @Ален перед тем как написать, проверяет код у себя!
    И проверьте, вы точно файл module/special.php редактируете, а не такой же в другой папке?
     
  18. Bes

    Bes Пользователь

    Сообщения:
    57
    Симпатии:
    1
    Мой косяк, не обновил кэш, спасибо за помощь!
     
  19. zedkey

    zedkey Новичок

    Сообщения:
    1
    Симпатии:
    0
    Здравствуйте,
    Как в раздел акций можно добавлять определенные позиции (сейчас там высвечивается все со скидкой).
    А что, если я хочу туда поставить именно свои определенные позиции из каталога? Определенные ID товара?
     
  20. Ravilr

    Ravilr Специалист

    Сообщения:
    3.062
    Симпатии:
    853
    для того и функционал, чтобы показывать все со скидкой. Создайте отдельную категорию и формируйте список какой нравится. Можно конечно дописать алгоритм выборки, чтобы например в список акций входили товары с определенным порядком сортировки.