Kênh 360 Công Nghệ Kênh 360 Công Nghệ

Trang chủ - PrestaShop - PrestaShop Modules - Hiển thị Sản phẩm ngẫu nhiên trong Prestashop

Hiển thị Sản phẩm ngẫu nhiên trong Prestashop

Để hiển thị Sản phẩm ngẫu nhiên trong Prestashop có 2 giải pháp chính: viết module mới dựa trên module blocknewproducts hoặc sửa code module này.


Mở và sửa file …/modules/blocknewproducts/blocknewproducts.php

Tìm : getNewProducts

$newProducts = Product::getNewProducts(intval($params['cookie']->id_lang), 0, Configuration::get('NEW_PRODUCTS_NBR'));

thay thế

$newProducts = Product::getNewProducts(intval($params['cookie']->id_lang), 0, 100);
shuffle($newProducts);
array_splice($newProducts, Configuration::get('NEW_PRODUCTS_NBR') );

Cách 2: Sửa file classes\Product.php

Tìm Getnewproducts

 /**
* Get new products
*
* @param integer $id_lang Language id
* @param integer $pageNumber Start from (optional)
* @param integer $nbProducts Number of products to return (optional)
* @return array New products
*/

Thêm đoạn code sau

 /*************** Random New Products *****************/
/*
* Get new products random
*
* @param integer $id_lang Language id
* @param integer $pageNumber Start from (optional)
* @param integer $nbProducts Number of products to return (optional)
* @return array
random New products
*/
static public function getNewProductsRandom($id_lang, $pageNumber = 0, $nbProducts = 10, $count = false, $orderBy = NULL, $orderWay = NULL)
{
global $link, $cookie;

if (
$pageNumber < 0) $pageNumber = 0;
if (
$nbProducts < 1) $nbProducts = 10;
if (empty(
$orderBy)) $orderBy = 'date_add';
if (empty(
$orderWay)) $orderWay = 'DESC';
if (
$orderBy == 'id_product' OR $orderBy == 'price' OR $orderBy == 'date_add')
$orderByPrefix = 'p';
elseif (
$orderBy == 'name')
$orderByPrefix = 'pl';
if (!
Validate::isOrderBy($orderBy) OR !Validate::isOrderWay($orderWay))
die(
Tools::displayError());

if (
$count)
{
$result
= Db::getInstance()->getRow('
SELECT COUNT(`id_product`) AS nb
FROM `'
._DB_PREFIX_.'product`
WHERE `active` = 1'
);
return
intval($result['nb']);
}

$result
= Db::getInstance()->ExecuteS('
SELECT p.*, pl.`description`, pl.`description_short`, pl.`link_rewrite`, pl.`meta_description`, pl.`meta_keywords`, pl.`meta_title`, pl.`name`, p.`ean13`,
i.`id_image`, il.`legend`, t.`rate`, m.`name` AS manufacturer_name
FROM `'
._DB_PREFIX_.'product` p
LEFT JOIN `'
._DB_PREFIX_.'product_lang` pl ON (p.`id_product` = pl.`id_product` AND pl.`id_lang` = '.intval($id_lang).')
LEFT JOIN `'
._DB_PREFIX_.'image` i ON (i.`id_product` = p.`id_product` AND i.`cover` = 1)
LEFT JOIN `'
._DB_PREFIX_.'image_lang` il ON (i.`id_image` = il.`id_image` AND il.`id_lang` = '.intval($id_lang).')
LEFT JOIN `'
._DB_PREFIX_.'tax` t ON (t.`id_tax` = p.`id_tax`)
LEFT JOIN `'
._DB_PREFIX_.'manufacturer` m ON (m.`id_manufacturer` = p.`id_manufacturer`)
WHERE p.`active` = 1
AND DATEDIFF(p.`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
ORDER BY RAND() LIMIT '
.intval($pageNumber * $nbProducts).', '.intval($nbProducts));
if (
$orderBy == 'price')
Tools::orderbyPrice($result, $orderWay);
if (!
$result)
return
false;
return
Product::getProductsProperties($id_lang, $result);
}

/*************** End Random New Products *****************/

Mở và sửa file …/modules/blocknewproducts/blocknewproducts.php

Tìm : getNewProducts

$newProducts = Product::getNewProducts(intval($params['cookie']->id_lang), 0, Configuration::get('NEW_PRODUCTS_NBR'));
thay thế
$newProducts = Product::getNewProductsRandom(intval($params['cookie']->id_lang), 0, Configuration::get('NEW_PRODUCTS_NBR'));

Tham khảo từ PrestaShop forums

 



Tin mới hơn:
Tin cũ hơn:

Lần cập nhật cuối ( Thứ sáu, 15 Tháng 5 2009 11:07 )  

Kênh 360 công nghệ

  • Nổi bật
  • Tin mới
  • Game mới
  • PrestaShop Guide
  • PrestaShop

Có thể bạn quan tâm

Download nhiều nhất

11/12
Download PES 2011 - FIFA 11
693
18/12
binkw32 dll
175
18/12
TeamViewerQS
49
English French German Japanese Korean