matte89thebest Posted May 31, 2010 Share Posted May 31, 2010 PRODOTTI RANDOM NELLA HOME:A) RANDOM DEI NEW PRODUCT nella homepage: --> leggi quà sotto RANDOM DEI PRODOTTI PRESENTI NELLA CATEGORIA HOME IN homepageC) RANDOM DEI PRODOTTI PRESENTI IN UNA CATEGORIA NELLA homepageD) RANDOM DI TUTTI I PRODOTTI NELLA homepagelink alle soluzioni B C D:http://www.prestashop.com/forums/viewreply/265628/By Vassag0FILE classes/Product.phpSearchGet new products, you would see /** * 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 */ Over this codec add /*************** Ramdom 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 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 Ramdom New Products *****************/ Salvate la modifica.ora modificate il file del modulo /modules/homefeatured/homefeatured.php come segue:Ricordatevi di fare una copia di backup del file PRIMA.Cercate sul fondo: $products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10)); E sostituitelo con: /*NEW*/ $products = Product::getNewProductsRandom(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10)); /*END NEW*/ Ecco il pezzo di listato completo per individuarlo meglio (io ho mantenuto la stringa originale commentata).Se invece volete che il random sia SOLO sui prodotti che voi inserite come categoria HOME (motlo utile per crearsi una "categoria" con i prodotti più appetibili e mandarli in random) [ANCORA DA VERIFICARE]Sostituite sempre a questa stringa: $products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10)); IN FASE DI TEST .... come passare alla funzione random la categoria home...Ricordatevi di fare una copia di backup del file PRIMA.FILE /modules/homefeatured.php (parte di fondo) function hookHome($params) { global $smarty; $category = new Category(1); $nb = intval(Configuration::get('HOME_FEATURED_NBR')); /*MODIFICA_RANDOM $newProducts = Product::getNewProductsRandom(intval($params['cookie']->id_lang), 0, Configuration::get('NEW_PRODUCTS_NBR'));*/ /*OLD: $products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10));*/ /*NEW*/ $products = Product::getNewProductsRandom(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10)); /*END NEW*/ $smarty->assign(array( 'allow_buy_when_out_of_stock' => Configuration::get('PS_ORDER_OUT_OF_STOCK', false), 'max_quantity_to_allow_display' => Configuration::get('PS_LAST_QTIES'), 'category' => $category, 'products' => $products, 'currency' => new Currency(intval($params['cart']->id_currency)), 'lang' => Language::getIsoById(intval($params['cookie']->id_lang)), 'productNumber' => sizeof($products), 'homeSize' => Image::getSize('home') )); return $ LINK ai FILE COMPLETI Link to comment Share on other sites More sharing options...
Automot Posted June 1, 2010 Share Posted June 1, 2010 spettacolare....grazie mille matte89thebest Link to comment Share on other sites More sharing options...
matte89thebest Posted June 1, 2010 Author Share Posted June 1, 2010 Segnalo già che ci sono che la funzione Random è utilizzabile in tutti gli altri moduli che visualizzano prodotti.Può essere utile inserirla nel blocco NEW PRODUCT per visualizzare ogni volta 2 prodotti random tra quelli appena inseriti!BLOCCO NUOVI PRODOTTI CON FUNZIONE RANDOM:modulo: blocknewproductsCercate nel file blocknewproducts.php $newProducts = Product::getNewProducts(intval($params['cookie']->id_lang), 0, Configuration::get('NEW_PRODUCTS_NBR')); e sostituite con: $newProducts = Product::getNewProductsRandom(intval($params['cookie']->id_lang), 0, Configuration::get('NEW_PRODUCTS_NBR')); Trovate il file RAR da scaricare al link sopra. Link to comment Share on other sites More sharing options...
Alemix Posted June 11, 2010 Share Posted June 11, 2010 Ciao ho provato a mettere il tuo codice, ma alla fine mi dice che non trova prodotti in vetrina, sai mica come mai? Link to comment Share on other sites More sharing options...
Automot Posted June 11, 2010 Share Posted June 11, 2010 Ciao hai provato ad inserire un prodotto nuovo...?a me il random lo fa solo sui nuovi prodotti Link to comment Share on other sites More sharing options...
Alemix Posted June 11, 2010 Share Posted June 11, 2010 Sinceramente parlando no, però in questo modo dovrei togliere tutti i vecchi prodotti? Link to comment Share on other sites More sharing options...
Automot Posted June 12, 2010 Share Posted June 12, 2010 ma da quello che ho notato prende solo quelli "nuovi" che sono quelli che apparirebbero nella colonna destra (prodotti nuovi)pero' non essendo molto pratico di php non sarei in grado di modificarlo... Link to comment Share on other sites More sharing options...
vitwagen Posted June 28, 2010 Share Posted June 28, 2010 Ciao sei sicuro che funzioni con la 1.3.1 la parte finale del RANDOM attinto dalla home?? Link to comment Share on other sites More sharing options...
vitwagen Posted June 28, 2010 Share Posted June 28, 2010 Eccola.. Sciolto l'arcano.homefeatured.php nn si aggancia di default alla funzione getProducts di Product.php ma di Categories.php che di suo gia' supporta il random.Per far ruotare in maniera random i prodotti in vetrina attinti dalla categoria Home e' sufficiente modificare cosi' il file homefeatured.php . Non server aggiungere la funzione Random al file Product.php a meno che nn si voglia usarla nel blocco nuovi prodotti.Nel file homefeatured.php $products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10)); Mettete $products = $category->getProducts(intval($params['cookie']->id_lang), 0,($nb ? $nb : 10),NULL,NULL,false,true,true,($nb ? $nb : 10) ); A me va una bomba.Ciao ragazzi. Link to comment Share on other sites More sharing options...
Automot Posted June 29, 2010 Share Posted June 29, 2010 ma in questo caso ti fa il random solo dei prodotti nella categoria home giusto..?e se volessi fare il random di tutti i prodotti pubblicati..? Link to comment Share on other sites More sharing options...
vitwagen Posted June 29, 2010 Share Posted June 29, 2010 ma in questo caso ti fa il random solo dei prodotti nella categoria home giusto..?e se volessi fare il random di tutti i prodotti pubblicati..? Sinceramente non mi sono posto il problema, perche' a me basta ed avanza la home.Come ho tempo do un occhiata.. Link to comment Share on other sites More sharing options...
Automot Posted June 30, 2010 Share Posted June 30, 2010 Grazie mille vitwagenallora attendo intrepido... Link to comment Share on other sites More sharing options...
vitwagen Posted June 30, 2010 Share Posted June 30, 2010 Intanto ti dico che le categorie che il modulo scandaglia sono modificabili da homefeatured.php... $category = new Category(1); 1 e' l'id della categoria home, se vuoi cambiare categoria basta mettere il numero corrispondente della categoria che vuoi mettere.Ho fatto anche le modifiche per il giro di tutti i prodotti disponibili in tutte le categorie.Faccio due test e ti dico. Link to comment Share on other sites More sharing options...
Automot Posted June 30, 2010 Share Posted June 30, 2010 sei un mago....Grazie mille Link to comment Share on other sites More sharing options...
matte89thebest Posted July 1, 2010 Author Share Posted July 1, 2010 Scusate per l'assenza si quella modifica mi fa il random SOLO dei nuovi prodotti, perchè io volevo appunto eliminare la sezione HOME che è una BRUTTISIMA GESTIONE per conto mio!Il random della sola home ti obbliga a cambiare di continuo categoria ai prodotti!Così facendo io invece vado a mostrare un random dei prodotti più nuovi, che sono poi quelli che normalmente si trovano nelle home dei negozi!Per fare il random di tutti i prodotti NON potete usare la funzione che ho inserito io, in quanto quella è una funzione di random che pesa appunto solo dai prodotti "new"!Attendiamo vitwagen per il random completo!!PS CERCATE di postare soluzioni complete e dettagliate, altrimenti chi entra a post iniziato fa solo confusione!! Link to comment Share on other sites More sharing options...
vitwagen Posted July 1, 2010 Share Posted July 1, 2010 Ricapitoliamo da zero....Quindi illustriamo come modificare il modulo homefeatured per consentire una rotazione1)Random di una categoria specifica2)Random di tutti i prodotti nelle loro categorieFare un backup dei filemodules/homefeatured/homefeatured.phpclasses/Category.phpModifica del file homefeatured.phpcercare $products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10)); Cancellare la riga in questione ed inserire /*OLD: $products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10));*/$products = $category->getProducts(intval($params['cookie']->id_lang), 0,($nb ? $nb : 10),NULL,NULL,false,true,true,($nb ? $nb : 10) ); Modifica del file Category.phpcercare le due righe dove compare WHERE cp.`id_category` = '.intval($this->id).($active ? ' AND p.`active` = 1' : '').' Sostituire SOLTANTO la seconda riga non la prima con */WHERE cp.`id_category` = '.intval($this->id).($active ? ' AND p.`active` = 1' : '').'/* WHERE cp.`id_category` '.($this->id == 0 ? 'LIKE "%"' : '= '.intval($this->id)).($active ? ' AND p.`active` = 1' : '').' Come vedete ho lasciato la vecchia commentata non si sa mai si voglia tornare indietro.Ora il modulo sta randomizzando i prodotti in vetrina presenti nella categoria home, ed e' pronto a ruotarli tutti in maniera random.Per fare questo e' sufficiente agire su una riga del filehomefeatured.php $category = new Category(1); Il numero "1" identifica la categoria home, e puo' essere sostituito con qualunque altro identificativo di altre categorie nel caso vogliate fare girare altre categorie in random sulla home.Adesso per farle girare tutte le categorie random, modificate la riga di sopra in questa maniera. $category = new Category(0); in pratica lo 0 ora identifica tutte le categorie.NB: Fate attenzione che se qualche prodotto viene duplicato nella vetrina e' perche' e' ancora presente nella categoria home oltre che quella di appartenenza, o perche' e' presente in piu' categorie.Fatemi sapere se ci sono problemi, e consideratela una modifica in fase di test! ;-) Link to comment Share on other sites More sharing options...
matte89thebest Posted July 1, 2010 Author Share Posted July 1, 2010 Ho Linkato il tuo post nella prima pagina! Grazie Link to comment Share on other sites More sharing options...
Automot Posted July 1, 2010 Share Posted July 1, 2010 ho provato a mettere la categoria 0 ma non mi trova oggetti... Link to comment Share on other sites More sharing options...
vitwagen Posted July 1, 2010 Share Posted July 1, 2010 ho provato a mettere la categoria 0 ma non mi trova oggetti... Hai modificato il file Category.php?? Link to comment Share on other sites More sharing options...
Guest Posted July 2, 2010 Share Posted July 2, 2010 Idem.. Non trova prodotti, 0, mentre se lo tolgo in featured e esce uno.Inoltre faccio notare che ho fatto entrambe le modifiche, sia 1) che 2) e di righe con il codice */WHERE cp.`id_category` = '.intval($this->id).($active ? ' AND p.`active` = 1' : '').'/*WHERE cp.`id_category` '.($this->id == 0 ? 'LIKE "%"' : '= '.intval($this->id)).($active ? ' AND p.`active` = 1' : '').' ne ho trovate 3 nel file e non due.inoltre secondo me questo * che c'è piazzato davanti potrebbe essere un errore perchè quando lo incollo, utilizzando DREAWEVER cambia colore la sintassi.cmq ho modificato e mi scompare l'intero sito. tutto bianco.Quindi quale occorre usare per avere il FEATURED che mostri in modo random tutti i prodotti.Non potresti creare un file gia pronto da copiare senza andarea modificare il codice, soprattutto per chi non ci capisce nietne.GRazie mille cmq per l'interesse. Link to comment Share on other sites More sharing options...
vitwagen Posted July 3, 2010 Share Posted July 3, 2010 Idem.. Non trova prodotti, 0, mentre se lo tolgo in featured e esce uno.Inoltre faccio notare che ho fatto entrambe le modifiche, sia 1) che 2) e di righe con il codice */WHERE cp.`id_category` = '.intval($this->id).($active ? ' AND p.`active` = 1' : '').'/*WHERE cp.`id_category` '.($this->id == 0 ? 'LIKE "%"' : '= '.intval($this->id)).($active ? ' AND p.`active` = 1' : '').' ne ho trovate 3 nel file e non due.inoltre secondo me questo * che c'è piazzato davanti potrebbe essere un errore perchè quando lo incollo, utilizzando DREAWEVER cambia colore la sintassi.cmq ho modificato e mi scompare l'intero sito. tutto bianco.Quindi quale occorre usare per avere il FEATURED che mostri in modo random tutti i prodotti.Non potresti creare un file gia pronto da copiare senza andarea modificare il codice, soprattutto per chi non ci capisce nietne.GRazie mille cmq per l'interesse. L'asterisco seguito con lo slash significa che bisogna commentare la riga.In pratica invece di cancellarla la si commenta.Visto che ti esce tutto bianco hai un errore di sintassi nel php.Fai cosi, 1)fai un backup di Category.php2)Cerca la riga (sono 2 in tutto quindi devi fare 2 sostituzioni)WHERE cp.`id_category` = '.intval($this->id).($active ? ' AND p.`active` = 1' : '').'Rimuovila ed al suo posto mettiWHERE cp.`id_category` '.($this->id == 0 ? 'LIKE "%"' : '= '.intval($this->id)).($active ? ' AND p.`active` = 1' : '').' Io ho testato su prestashop 1.3.1 e mysqlFammi sapere Link to comment Share on other sites More sharing options...
vitwagen Posted July 5, 2010 Share Posted July 5, 2010 Ecco i file in attachment.Per la 1.3.1 Category.php homefeatured.php Link to comment Share on other sites More sharing options...
Genyux Posted September 23, 2011 Share Posted September 23, 2011 Eccola.. Sciolto l'arcano. homefeatured.php nn si aggancia di default alla funzione getProducts di Product.php ma di Categories.php che di suo gia' supporta il random. Per far ruotare in maniera random i prodotti in vetrina attinti dalla categoria Home e' sufficiente modificare cosi' il file homefeatured.php . Non server aggiungere la funzione Random al file Product.php a meno che nn si voglia usarla nel blocco nuovi prodotti. Nel file homefeatured.php $products = $category->getProducts(intval($params['cookie']->id_lang), 1, ($nb ? $nb : 10)); Mettete $products = $category->getProducts(intval($params['cookie']->id_lang), 0,($nb ? $nb : 10),NULL,NULL,false,true,true,($nb ? $nb : 10) ); A me va una bomba. Ciao ragazzi. Ciao, io su 1.4.4.1 ho modificato come sopra riportato ed effettivamente mi ha mixato i prodotti in home, però aggiornando o rientrando nel sito il risultato è statico.... Non ho toccato nient'altro perché inserisco comunque tutti i prodotti nella categoria home... Sai dirmi come posso far si che si abbia un ricambio continuo di prodotti? Grazie in anticipo!!! Link to comment Share on other sites More sharing options...
fabyj Posted December 7, 2012 Share Posted December 7, 2012 Ciao, il modulo che avete modificato si avvicina molto alle mie esigenze ma io avrei la necessità di un modulo Prodotti casuali in Vetrina il quale rispetti alcuni requisiti: 1) possibilità di scegliere il numero di prodotti da determinate categorie. 2) possibilità di attivare/disattivare i prodotti da far ruotare i quali risultano non disponibili o comunque aventi quantità uguale a zero. 3) possibilità di ordinare i prodotti in base al prezzo e far ruotare magari quelli con prezzo migliore Al momento ho trovato diversi moduli free e non free che non soddisfano tutti questi requisiti, forse questo modulo potrebbe fare al mio caso, ma non ne sono sicuro: http://addons.prestashop.com/en/front-office-features-prestashop-modules/2846-Home-categories-products.html ma considerando che voi ci siete andati molto vicino, sarebbe da aggiungere una variabile relativa alla scelta delle varie categorie, quindi perchè spendere cifre inutili? Considerando che non ci capisco molto, qualcuno di voi riesce ad inserire queste features? Apprezzerò molto il vostro suggerimento o aiuto. Grazie, a presto! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now