Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Ищу модуль случайны товар


Recommended Posts

Подскажите модуль случайны товар, что бы просто из всей базы брал заданное кол-во товаров на страницу и выводил всё время разные при обновлении страницы.

Спасибо.

Надіслати
Поділитися на інших сайтах


Модуль рекомендуемые товары(featured), можно немного модифицировать добавить выбор товара через функцию. и каждое обновление будет разные товары!

    public function getFAproducts($limit) {
        
        $sql = "SELECT product_id FROM " . DB_PREFIX . "product Where (quantity>0) ORDER BY RAND() LIMIT ".$limit;         
        
        $product_data = array();
        
        $query = $this->db->query($sql);
        
        foreach ($query->rows as $result) {         
            $product_data[$result['product_id']] = $result['product_id'];
        }
        
        return $product_data;
    }
Змінено користувачем texxnik
Надіслати
Поділитися на інших сайтах


Ещё вопрос в каком файле произвести изменения? Спасибо.

в двух) и наверно надо подсказать какие именно места менять))

1. controller/module/featured.php

 

найти             $products = array_slice($setting['product'], 0, (int)$setting['limit']);

поменять на $products = $this->model_catalog_product->getFAproducts((int)$setting['limit']);

 

2. catalog/model/catalog/product.php

 

запрос вставить в любое место в этом файле)

 

Допишите уже запрос свой на выборку товаров status = 1.

И в админке лимит задать нужно

 

я привел свой пример)) дописывать можно много чего)

Змінено користувачем texxnik
Надіслати
Поділитися на інших сайтах


Да главное дописать сохранение результата в кеш, ORDER BY RAND() - тяжелый запрос, если у Вас много товаров - это ощутимо

К примеру протестил, 5 тс товаров. 

ORDER BY name - 0.00007

ORDER BY RAND() - 0.05...

Надіслати
Поділитися на інших сайтах

Да главное дописать сохранение результата в кеш, ORDER BY RAND() - тяжелый запрос, если у Вас много товаров - это ощутимо

К примеру протестил, 5 тс товаров. 

ORDER BY name - 0.00007

ORDER BY RAND() - 0.05...

 а пример можно?

Надіслати
Поділитися на інших сайтах


в двух) и наверно надо подсказать какие именно места менять))

1. controller/module/featured.php

 

найти             $products = array_slice($setting['product'], 0, (int)$setting['limit']);

поменять на $products = $this->model_catalog_product->getFAproducts((int)$setting['limit']);

 

2. catalog/model/catalog/product.php

 

запрос вставить в любое место в этом файле)

 

 

я привел свой пример)) дописывать можно много чего)

Спасибо)

Надіслати
Поділитися на інших сайтах


окей)) а как сделать на кеш opencart?

Сори. я про запрос подумал.. плохо прочитал )

 

Ну вот пример стандартный

$product_data = $this->cache->get('product.random.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id') . '.' . $customer_group_id . '.' . (int)$limit);
 
if (!$product_data) { 
$query = $this->db->query(Наш запрос);
 
foreach ($query->rows as $result) {
$product_data[$result['product_id']] = $this->getProduct($result['product_id']);
}
 
$this->cache->set('product.random.' . (int)$this->config->get('config_language_id') . '.' . (int)$this->config->get('config_store_id'). '.' . $customer_group_id . '.' . (int)$limit, $product_data);
}
 
return $product_data;

 

 

Надіслати
Поділитися на інших сайтах

@rand()@ надо делать по минимальной "временной" таблице.

уже обсуждалась оптимизация "случайных товаров" несколько лет назад.

@Yesvik предлагал хороший выход - ищите по его сообщениям.

Надіслати
Поділитися на інших сайтах

  • 2 weeks later...

Кстати заметил такой нюанс, у меня на главной в данном переделанном модуле выводится 16 случайных товаров (4 колонки по 4 товара в строку). Так вот при обновлении страницы последний товар может не появляться, то есть может показывать 16 товаров, а может и 15, закономерности не заметил.В чём может быть причина? 

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.