Právě je 25 dub 2024 10:27

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]




Odeslat nové téma Odpovědět na téma  [ Příspěvků: 3 ] 
Autor Zpráva
 Předmět příspěvku: PrestaShop - Zobrazení nejprodávanějšího zboží po X nákupech
PříspěvekNapsal: 03 dub 2013 15:07 

Registrován:
05 črc 2011 16:31
Příspěvky:
54
Dobrý den,
dá se nějak nastavit, po kolik "nákupech" se nejprodávanější zboží zobrazí?

Děkuji


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PrestaShop - Zobrazení nejprodávanějšího zboží po X nákupech
PříspěvekNapsal: 16 dub 2013 17:46 
C4 podpora
C4 podpora

Registrován:
30 čer 2009 09:14
Příspěvky:
8507
Dobrý den,

je nutná úprava zdrojového kódu. Musíte v souboru classes/ProductSale.php upravit funkci getBestSalesLight, kterou modul využívá. Jedná o tuto část kódu:
Kód:
      $sql = 'SELECT p.id_product, pl.`link_rewrite`, pl.`name`, pl.`description_short`, MAX(image_shop.`id_image`) id_image, il.`legend`,
               ps.`quantity` AS sales, p.`ean13`, p.`upc`, cl.`link_rewrite` AS category
            FROM `'._DB_PREFIX_.'product_sale` ps
            LEFT JOIN `'._DB_PREFIX_.'product` p ON ps.`id_product` = p.`id_product`
            '.Shop::addSqlAssociation('product', 'p').'
            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 (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.')
            LEFT JOIN `'._DB_PREFIX_.'category_lang` cl
               ON cl.`id_category` = product_shop.`id_category_default`
               AND cl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('cl').'
            WHERE product_shop.`active` = 1
               AND p.`visibility` != \'none\'
               AND p.`id_product` IN (
                  SELECT cp.`id_product`
                  FROM `'._DB_PREFIX_.'category_group` cg
                  LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`)
                  WHERE cg.`id_group` '.$sql_groups.'
               )
            GROUP BY product_shop.id_product
            ORDER BY sales DESC
            LIMIT '.(int)($page_number * $nb_products).', '.(int)$nb_products;


do které přidejte za řádek:
Kód:
WHERE product_shop.`active` = 1

nový řádek s kódem:
Kód:
AND ps.`quantity` > 1

Místo čísla 1 si zadejte vlastní počet objednávek. S číslem 1 se zobrazí pouze produkty, které byly objednány více než jednou.

Finální úprava tedy bude vypadat následovně
Kód:
      $sql = 'SELECT p.id_product, pl.`link_rewrite`, pl.`name`, pl.`description_short`, MAX(image_shop.`id_image`) id_image, il.`legend`,
               ps.`quantity` AS sales, p.`ean13`, p.`upc`, cl.`link_rewrite` AS category
            FROM `'._DB_PREFIX_.'product_sale` ps
            LEFT JOIN `'._DB_PREFIX_.'product` p ON ps.`id_product` = p.`id_product`
            '.Shop::addSqlAssociation('product', 'p').'
            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 (i.`id_image` = il.`id_image` AND il.`id_lang` = '.(int)$id_lang.')
            LEFT JOIN `'._DB_PREFIX_.'category_lang` cl
               ON cl.`id_category` = product_shop.`id_category_default`
               AND cl.`id_lang` = '.(int)$id_lang.Shop::addSqlRestrictionOnLang('cl').'
            WHERE product_shop.`active` = 1
               AND ps.`quantity` > 1   
               AND p.`visibility` != \'none\'
               AND p.`id_product` IN (
                  SELECT cp.`id_product`
                  FROM `'._DB_PREFIX_.'category_group` cg
                  LEFT JOIN `'._DB_PREFIX_.'category_product` cp ON (cp.`id_category` = cg.`id_category`)
                  WHERE cg.`id_group` '.$sql_groups.'
               )
            GROUP BY product_shop.id_product
            ORDER BY sales DESC
            LIMIT '.(int)($page_number * $nb_products).', '.(int)$nb_products;


Jelikož tuto funkci může využívat i jiná část obchodu, nejlepší by bylo celou funkci getBestSalesLight zkopírovat, upravit její název a přidat vlastní kód. A následně změnit název funkce přímo v modulu pro nejprodávanější zboží v souboru modules/blockbestsellers/blockbestsellers.php.

_________________
Radek Plašil
Webhosting C4
https://www.c4.cz/


Nahoru
 Profil  
 
 Předmět příspěvku: Re: PrestaShop - Zobrazení nejprodávanějšího zboží po X nákupech
PříspěvekNapsal: 16 dub 2013 20:13 

Registrován:
05 črc 2011 16:31
Příspěvky:
54
Děkuji, moc mi to pomohlo.


Nahoru
 Profil  
 
Zobrazit příspěvky za předchozí:  Seřadit podle  
Odeslat nové téma Odpovědět na téma  [ Příspěvků: 3 ] 

Všechny časy jsou v UTC + 1 hodina [ Letní čas ]


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků


Nemůžete zakládat nová témata v tomto fóru
Nemůžete odpovídat v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete přikládat soubory v tomto fóru

Hledat:
Přejít na:  
FTP Uploader
Staňte se naším zákazníkem!
Hledáme kolegy
PrestaShop partneři

Seznam všech partnerů

PrestaShop Hosting
Návody pro C4

© 2009-2024 ČESKÝ WEBHOSTING s.r.o. Kontaktní e-mail: forum@c4.cz
Diskuzní fórum využívá technologie: phpBB, phpBB-SEO.com, phpBB.cz