Автор Тема: модуль featured product  (Прочитано 2694 раз)

08 Июнь 2013, 23:08:19
  • Новичок
  • *
  • Сообщений: 8
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Подскажите пожалуйста, есть сайт http://cleopatra-shop.ru Поставил на него модуль популярные товары, который "рандомизирует" товары. Все товары сбились, отображаются неровно. что сделать чтобы все товары ровно стояли?
09 Июнь 2013, 12:30:08
Ответ #1
  • Новичок
  • *
  • Сообщений: 8
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо разобрался
19 Январь 2014, 14:56:01
Ответ #2
  • Пользователь
  • **
  • Сообщений: 65
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Подскажи что это за модуль и где его скачать, тоже хочу чтобы избранные товары на главной были случайным образом?
19 Январь 2014, 16:29:44
Ответ #3
  • Ветеран
  • *****
  • Сообщений: 1285
  • Репутация: +13/-1
  • Сообщество PrestaShop
    • Просмотр профиля
Поменять в модуле HomeFeatured выбор товаров.
$sql = 'SELECT p.*, product_shop.*, stock.out_of_stock, IFNULL(stock.quantity, 0) as quantity, MAX(product_attribute_shop.id_product_attribute) id_product_attribute, product_attribute_shop.minimal_quantity AS product_attribute_minimal_quantity, pl.`description`, pl.`description_short`, pl.`available_now`, pl.`available_later`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, MAX(image_shop.`id_image`) id_image, il.`legend`, m.`name` AS manufacturer_name, cl.`name` AS category_default, DATEDIFF(product_shop.`date_add`, DATE_SUB(NOW(),INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).'DAY)) > 0 AS new, product_shop.price AS orderprice
FROM `'._DB_PREFIX_.'category_product` cp
LEFT JOIN `'._DB_PREFIX_.'product` p
ON p.`id_product` = cp.`id_product` '.Shop::addSqlAssociation('product', 'p').'
LEFT JOIN `'._DB_PREFIX_.'product_attribute` pa
ON (p.`id_product` = pa.`id_product`)'.Shop::addSqlAssociation('product_attribute', 'pa', false, 'product_attribute_shop.`default_on` = 1').''.Product::sqlStock('p', 'product_attribute_shop', false, $context->shop).'
LEFT JOIN `'._DB_PREFIX_.'category_lang` cl
ON (product_shop.`id_category_default` = cl.`id_category` AND cl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('cl').')
LEFT JOIN `'._DB_PREFIX_.'product_lang` pl
ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('pl').')
LEFT JOIN `'._DB_PREFIX_.'image` i
ON (i.`id_product` = p.`id_product`)'. Shop::addSqlAssociation('image', 'i', false, 'image_shop.cover=1').'
LEFT JOIN `'._DB_PREFIX_.'image_lang` il
ON (image_shop.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.')
LEFT JOIN `'._DB_PREFIX_.'manufacturer` m
ON m.`id_manufacturer` = p.`id_manufacturer`
WHERE product_shop.`id_shop` = '.(int)$context->shop->id.'
AND cp.`id_category` = '.(int)$this->id .($active ? ' AND product_shop.`active` = 1' : '') .($front ? '
AND product_shop.`visibility` IN ("both", "catalog")' : '') .($id_supplier ? '
AND p.id_supplier = '.(int)$id_supplier : '')
.' GROUP BY product_shop.id_product'
.' ORDER BY RAND()'
.' LIMIT '.(((int)$p - 1) * (int)$n).','.(int)$n;

$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);
Так будет выдавать товары лучайным образом.
19 Январь 2014, 16:35:51
Ответ #4
  • Пользователь
  • **
  • Сообщений: 65
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Правильно я понимаю, что в модуле homefeatured надо изменить код, вставив то что Вы указали. Не могли бы подсказать куда именно, в какое место файла надо вставить указанный Вами код?
19 Январь 2014, 17:25:25
Ответ #5
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Не нужно добавлять запросы к бд, чтобы поменять сортировку.
В prestashop есть возможность случайной сортировки.
В функции
public function hookDisplayHome($params)
{
заменить
$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 8), "position");на
$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 8), "position", null, false, true,true, ($nb ? $nb : 8));
19 Январь 2014, 17:37:28
Ответ #6
  • Пользователь
  • **
  • Сообщений: 65
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Подскажите пожалуйста в каком именно файле менять это?
19 Январь 2014, 18:47:36
Ответ #7
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
/modules/homefeatured/homefeatured.php
19 Январь 2014, 19:09:21
Ответ #8
  • Пользователь
  • **
  • Сообщений: 65
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Сделал как Вы сказали, ничего не изменилось. У меня преста 1.5.6.0
19 Январь 2014, 19:16:22
Ответ #9
  • Пользователь
  • **
  • Сообщений: 65
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Точнее заработало, но, перемешивание происходит только при первоначальной загрузке, либо если я очистил кэш и обновил главную страницу. Это так и должно быть?
19 Январь 2014, 19:46:12
Ответ #10
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Чтобы при каждой перезагрузки страницы в блоке обновлялись товары, нужно отключить кешироние (на уровне сайта или на уровне модуля).
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
19 Январь 2014, 19:55:06
Ответ #11
  • Пользователь
  • **
  • Сообщений: 65
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Как это сделать на уровне модуля?
19 Январь 2014, 20:40:51
Ответ #12
  • Пользователь
  • **
  • Сообщений: 65
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
И еще, подскажите, чем чревато отключения кэширования на уровне сайта?
20 Январь 2014, 10:31:04
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Кеширование ускоряет работу сайта, снижает нагрузку на сервер.
Отключать полностью не рекомендуется.
20 Январь 2014, 12:27:04
Ответ #14
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Для очистки кеша от шаблона модуля используйте функцию
$_clearCache('название шаблона');