Jump to content

[TIPS] Homefeatured prodotti random e non fissi


disarci

Recommended Posts

Ciao a tutti,

mi chiedono spesso di avere i prodotti random in home page.

 

Il modulo è homefeatured, file homefeatured.php

 

andare alla riga:

 

$products = $category->getProducts((int)($params['cookie']->id_lang), 1, ($nb ? $nb : 10));

sostituire con:

 

$products = $category->getProducts((int)($params['cookie']->id_lang), 1, ($nb ? $nb : 10),NULL,NULL,false,true,true,($nb ? $nb : 10));

 

se vi chiedete cosa significa, basta aprire la function in classes/Category.php:

 

public function getProducts($id_lang, $p, $n, $orderBy = NULL, $orderWay = NULL, $getTotal = false, $active = true, $random = false, $randomNumberProducts = 1, $checkAccess = true)

quindi ho messo: random=true e il numero di prodotti= $nb se presente se no 10

  • Like 1
Link to comment
Share on other sites

  • 2 weeks later...
  • 2 weeks later...

ciao,

la modifica funziona però ho questo problema:

i blocchi dei prodotti in vetrina non sono della stessa misura e randomizandosi crea un disordine, in pratica i box non sono allineati e anche i tasti "visualizza" e aggiungi al carrrello" sono tutti sfalzati.

 

avete un idea di come rimediare

 

grazie

Link to comment
Share on other sites

  • 1 month later...
  • 1 month later...

Fantastico, è una soluzione talmente comoda e intelligente che dovrebbe essere implementata direttamente nel core di Prestashop come opzione del modulo!!!

 

Purtroppo modificare i file del core non è mai una buona idea, al primo aggiornamento tutte le modifiche vanno perdute :-(

Link to comment
Share on other sites

Ciao a tutti,

mi chiedono spesso di avere i prodotti random in home page.

 

Il modulo è homefeatured, file homefeatured.php

 

andare alla riga:

 

$products = $category->getProducts((int)($params['cookie']->id_lang), 1, ($nb ? $nb : 10));

 

 

sostituire con:

$products = $category->getProducts((int)($params['cookie']->id_lang), 1, ($nb ? $nb : 10),NULL,NULL,false,true,true,($nb ? $nb : 10));

 

 

 

se vi chiedete cosa significa, basta aprire la function in classes/Category.php:

public function getProducts($id_lang, $p, $n, $orderBy = NULL, $orderWay = NULL, $getTotal = false, $active = true, $random = false, $randomNumberProducts = 1, $checkAccess = true)

quindi ho messo: random=true e il numero di prodotti= $nb se presente se no 10

 

VISTO CHE OGNIUNO ESPRIME LA SUA OPINIONE POTETE POSTARE UNA SOLUZIONE CHE FUNZIONA (1.4.4.1) ???,

POI NON HO CAPITO SE BISOGNA INNESTARE UN MODULO O INTERVENIRE SU QUALCHE MODULO GIà PRESENTE SU PRESTA .Falco Stellare ho visto i tuo store (complimenti) , ho notato che tutto funziona per il meglio

Dove bisogna intervenire???

Grazie !

www.tipicosiciliano.com

Link to comment
Share on other sites

Ciao, grazie per i complimenti :-) Il sito ha pochi mesi di vita (è stato inaugurato poco prima di Natale scorso) e sto cercando ogni giorno di migliorarne l'aspetto, i contenuti, e le vendite ovviamente :-D

 

Consiglio sulla netiquette: non scrivere tutto in stampatello, telematicamente equivale ad entrare in una stanza urlando come un ossesso, non è il miglior modo per farsi ascoltare :-)

 

L'intervento di Disarci è un tipico intervento da programmatore professionista, che offre un consiglio tecnico utilizzando un linguaggio assolutamente tecnico, da addetto ai lavori. Anch'io sono un programmatore professionista, e ho letto e applicato il suggerimento di Disarci in circa sette secondi, compreso il deployment sul sito... Quanto ti intendi di programmazione?

 

Disarci, tradotto in parole povere, suggeriva di alterare i parametri che un file php passa in real-time ad una funzione del core di Prestashop, in particolare la funzione che si occupa di effettuare la query sul database per prelevare l'elenco degli ultimi prodotti inseriti nella categoria "Home" (il sistema utilizzato da Prestashop per creare una categoria logica chiamata "homefeatured", i prodotti da schiaffare in vetrina, insomma). Nativamente il file homefeatured.php (posizionato in /modules/homefeatured/) passa alla funzione di query dei parametri che impongono di prelevare dal database gli ultimi prodotti inseriti, in ordine cronologico inverso (l'ultimo prodotto sarà il primo della lista).

 

La modifica di Disarci permette invece di selezionare i prodotti inseriti nella categoria "Home" ordinandoli a caso (quindi non più in ordine temporale di inserimento); MySQL utilizza la clausola ORDER BY RAND() della funzione SELECT per ottenere questo risultato, spesso associato alla clausola LIMIT per non tirare giù tutto il database, quando non serve.

 

Operativamente: apri il file /modules/homefeatured/homefeatured.php e cerchi la riga che contiene il seguente codice:

 

$products = $category->getProducts((int)($params['cookie']->id_lang), 1, ($nb ? $nb : 10));

 

Nel mio caso, si tratta della riga n. 99 del file. Questa riga deve essere sostituita dall'alternativa proposta da Disarci, basta copiarla e incollarla sopra la riga originale, e diventa:

 

$products = $category->getProducts((int)($params['cookie']->id_lang), 1, ($nb ? $nb : 10),

NULL,NULL,false,true,true,($nb ? $nb : 10));

 

(Ho spezzato la riga con un "a capo" per facilitare la lettura, questo non ha alcuna influenza sul funzionamento della riga di codice PHP).

 

A questo punto salvi il file homefeatured.php e lo sostituisci alla versione online (effettua sempre una copia di sicurezza prima di modificare un file!). Tutto qua, ci vuole più tempo a dirlo che a farlo.

 

Ovviamente, se sei un programmatore capisci anche cosa stai facendo, e perché. E questo a volte aiuta :-)

Link to comment
Share on other sites

i blocchi dei prodotti in vetrina non sono della stessa misura e randomizandosi crea un disordine, in pratica i box non sono allineati e anche i tasti "visualizza" e aggiungi al carrrello" sono tutti sfalzati

 

"Sfalsati", con la "esse" -_-:P

 

Qui non è questione di PHP, ma di CSS. Devi creare un'incasellatura dei box che sia rigida, con un'altezza e una larghezza predeterminata, che non sia quindi influenzabile dai contenuti. Sul mio sito, per snellezza, ho rimosso tutti i pulsanti dai vari box, trovo che avere una schermata con mille pulsanti uguali sia fastidioso e penalizzi la facilità di lettura dei contenuti. La struttura rigida che ho creato produce una griglia regolare che non si sposta mai, a tutto vantaggio dell'impaginazione.

 

Potenza dei CSS :-)

Link to comment
Share on other sites

  • 3 months later...

Grazie ancora Disarci per i tuoi consigli, mi chiedevo se fosse possibile applicare questa procedura random anche al modulo "productscategory".

Sarebbe il modulo che mostra altri prodotti della stessa categoria, il problema è che li mostra in ordine alfabetico facendo perdere visibilità ai prodotti alfabeticamente più "sfortunati :)

Link to comment
Share on other sites

  • 2 weeks later...
  • 4 weeks later...
  • 4 months later...

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 account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...