[Помогите] Акции - вывод товаров случайным образом

Тема в разделе "OpenCart", создана пользователем Павел_Б, 10 мар 2013.

  1. Павел_Б

    Павел_Б

    Регистрация:
    12 янв 2013
    Сообщения:
    67
    Симпатии:
    6
    Здравствуйте.
    Подскажите пожалуйста, как сделать вовод случайных акционных товаров в модуль АКЦИИ.
    Сейчас выводятся первые 5 акционных товара, которые сортируются по названию. Как сделать Rendom?
    Всем спасибо :wink: и конечно + в репутацию))
    Вот пациент
     
  2. ruslan216455

    ruslan216455

    Регистрация:
    6 ноя 2012
    Сообщения:
    220
    Симпатии:
    22
    можно сделать простую выборку из базы написать на php
     
    Павел_Б нравится это.
  3. Bnopen

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

    Регистрация:
    3 мар 2013
    Сообщения:
    1.187
    Симпатии:
    518
    Павел_Б, ищем файл у себя - catalog/model/catalog/product.php
    Там находим функцию - getProductSpecials
    В этой функции ищем код:
    Код:
    if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
    if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
    $sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
    } else {
    $sql .= " ORDER BY " . $data['sort'];
    }
    } else {
    $sql .= " ORDER BY p.sort_order";
    }
    Здесь меняем в помледнем else $sql .= " ORDER BY p.sort_order"; на $sql .= " ORDER BY RAND()";
    Т.О получаем код -
    Код:
    if (isset($data['sort']) && in_array($data['sort'], $sort_data)) {
    if ($data['sort'] == 'pd.name' || $data['sort'] == 'p.model') {
    $sql .= " ORDER BY LCASE(" . $data['sort'] . ")";
    } else {
    $sql .= " ORDER BY " . $data['sort'];
    }
    } else {
    $sql .= " ORDER BY RAND()";
    }
    Таким образом, по умолчанию должно выводится в случайном порядке.
    Отпишитесь как работает - т.к. случайный вывод товаров делал в категории - но такое же и должно работать для модуля акции - прописав по аналогии для этой функции.
     
    cereberlum нравится это.
  4. stifutkin

    stifutkin

    Регистрация:
    22 дек 2012
    Сообщения:
    172
    Симпатии:
    43
    Как вариант найти модуль JV_Products in module. Там реализована данная возможность.
     
  5. namza80

    namza80

    Регистрация:
    22 янв 2014
    Сообщения:
    1
    Симпатии:
    0
    ---
    Это что, прикол такой?
    Неужели ни кто не знает как сделать акции в 1.5.5.1 рандомно?
    Зря регистрировался что ли?
    ---
    Вот так можно сделать в рекомендуемых:
    В catalog/controller/module/featured.php перед строкой 21
    $products = array_slice($products, 0, (int)$setting['limit']);
    Вставляем функцию перемешивания массива в случайном порядке
    shuffle ($products);
     
  6. surlan

    surlan

    Регистрация:
    13 окт 2014
    Сообщения:
    1
    Симпатии:
    0
    В файле catalog/controller/module/special.php фрагмент:
    $this->data['products'][] = array(
    'product_id' => $result['product_id'],
    'thumb' => $image,
    'name' => $result['name'],
    'price' => $price,
    'special' => $special,
    'rating' => $rating,
    'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
    'href' => $this->url->link('product/product', 'product_id=' . $result['product_id'])
    );
    }

    Заменяете на:
    $this->data['products'][] = array(
    'product_id' => $result['product_id'],
    'thumb' => $image,
    'name' => $result['name'],
    'price' => $price,
    'special' => $special,
    'rating' => $rating,
    'reviews' => sprintf($this->language->get('text_reviews'), (int)$result['reviews']),
    'href' => $this->url->link('product/product', 'product_id=' . $result['product_id'])
    );
    shuffle($this->data['products']);
    }

    Работает на 1.5.6.4