5 Molte righe di codice, Codice, PrestaShop

PrestaShop e prodotti casuali in vetrina

Usando PrestaShop una delle prime funzionalità che saltano agli occhi è quella della “Vetrina” cioè di una serie di prodotti che possono essere messi in evidenza nella Home Page. La funzionalità di base è gestita dal modulo “homefeatured” ma è, nella configurazione di partenza, abbastanza limitata, in particolare vincola la presenza in vetrina SE E SOLO SE il prodotto appartiene ad una categoria preimpostata (madre di tutte le categorie) chiamata “HOME”.

Cercando in giro si trovano alcune modifiche da fare al modulo per poter mostrare nella vetrina prodotti nuovi o con altri criteri, ma tutti questi con alcuni limiti per le mie esigenze.

In particolare si voleva mostrare in vetrina dei prodotti in modo “casuale” ma cambiando la vetrina stessa solo una volta al giorno, per non confondere i visitatori.

Nessuna delle funzioni della classe Products.php aveva le informazioni necessarie per recuperare un tot di prodotti casuali, con tutte le informazioni necessarie per essere mostrati nella vetrina, ma aggiornando questa lista solo una volta al giorno.

La soluzione è stata aggiungere nel modulo una funzione che recuperi i prodotti

[php]
public static function getHProducts($id_lang, $nb)
[/php]


QUI il codice completo del modulo corretto, salvare come file .php

e poi nella funzione “hookHome” richiamare questa funzione

[php]
$products = HomeFeatured::getHProducts(
intval($params[‘cookie’]->id_lang),
($nb ? $nb : 10)
);
[/php]

Annunci

21 pensieri riguardo “PrestaShop e prodotti casuali in vetrina”

  1. anche io con la versione 1.5 ho il problema dell’allineamento.
    potresti pubblicare il file che hai corretto per la versione 1.5 ??

    ti ringraziamo

    Mi piace

  2. Ciao,
    ho lo stesso problema risolto da Lj potresti mandarmi il file aggiornato.
    Mi mette le immagini fuori dalla tabella a caso.
    Grazie

    Mi piace

  3. Ciao,
    anch’io come tanti sono alle prime armi.. ho PS 1.5.4
    sono riuscito a salvare il file php. ma non rieco a apire dove devo inserire la stringa “hookHome”

    potete aiutarmi?

    Mi piace

    1. La funzione “hookHome” è già presente nel file homefeatured.php e quindi non devi inserirla, ma al suo interno bisogna mettere il richiamo alla nuova funzione HomeFeatured::getHProducts al posto di $category->getProducts

      Mi piace

  4. Rieccomi qui! 🙂

    Allora, se per te è lo stesso posso anche mandarti il file .zip contenente il template da me utilizzato, di modo tale che tu possa avere un’idea chiara di che cosa ho bisogno esattamente, anche se una versione demo del medesimo template è disponibile al seguente indirizzo: http://addons.prestashop.com/demo/FO3170.html

    Considera comunque che il blocco contenente questa fantomatica “Frase del Giorno” intendevo collocarlo al lato destro, o al più in basso a destra, rispetto allo slideshow.

    Per il resto, sempre seguendo il tuo suggerimento, ho trovato un tutorial che in pochi passi ti spiega come andare ad inserire lo script PHP che farebbe proprio al caso mio, anche se ovviamente la guida fa riferimento all’inserimento del suddetto script in una pagina web “generica”, non di Prestashop! 😦 Il tutorial lo trovi qui: http://blazonry.com/php/quoteoftheday.php

    Direi che questo è quanto per il momento, ma se necessiti di qualche altra informazione o dell’archivio .zip del template fammelo pure sapere, a presto! 😉

    Mi piace

  5. Ciao,
    sono alle prime armi con Prestashop, vers. 1.5.4
    volevo chiedervi come si possono mettere 5 prodotti sulla stessa riga nei prodotti in vetrina invece di 4. Ho già provato a cambiare la riga sul file homefeatured.tpl
    da {assign var=’nbItemsPerLine’ value=4} a {assign var=’nbItemsPerLine’ value=5}
    ma non ho avuto alcun risultato.

    qualche suggerimento?
    Vi ringrazio in anticipo.

    ciao

    Mi piace

    1. Bella domanda, direi che dovrebbe però essere possibile da Back Office->Moduli->In evidenza (opp. Featured)
      da qui nelle opzioni puoi cambiare il numero di prodotti…
      potrebbe essere necessario anche agire poi sul .css
      prova a fammi sapere

      Mi piace

  6. Rieccomi, spero di non essere considerato spammer..
    ho risolto, modificando il file homefeatured.php all’interno della cartella del modulo omonimo..
    se ti interessa posso inviarti una copia del file modificato per la pubblicazione.. (PS 1.5.2.0, funziona benissimo)

    Mi piace

  7. Ciao, ho prestashop 1.5.2.0, la modifica funziona, ma i prodotti in vetrina perdono l’incasellamento.. cioè, sono sempre 8 (come da mio setup) ma invece di due righe x quattro si posizionano casualmente in 4/5 righe, nella prima tre prodotti, nella seconda uno solo, nella terza due e così via..
    Qualche suggerimento?

    Mi piace

  8. Ti ringrazio intanto per la risposta! 🙂

    Comunque sì, l’idea sarebbe proprio quella di “prelevare” il testo desiderato – preferibilmente un’anteprima dello stesso di max 2/3 righe – da una pagina CMS dedicata per l’appunto ai vari consigli per i clienti, per poi visualizzarlo in un blocco apposito nella home che vorrei riportasse una dicitura del tipo “Lo sapevi che…” o “La Frase del Giorno”…

    Come da te suggerito, ho anche provato a cercare qualcosa di preimpostato, ma la tua idea secondo me rimane la migliore! 😉 Vorrei solo capire come adattare quel codice perché faccia al caso mio… puoi aiutarmi??

    Mi piace

    1. bisogna un po’ capire di cosa hai bisogno, se parliamo di PrestaShop si deve agire da codice, se invece usi altri strumenti tipo WordPress ci sono blocchi gà pronti, ma dovresti anche mandare l’indirizzo del sito per capire di cosa stiamo parlando…

      Mi piace

  9. certamente, la vedo anche più facile del mostrare i prodotti in vetrina, puoi usare lo stesso codice che ho indicato nell’articolo ma invece che recuperare dei prodotti dati dal database dovresti recuperare il testo del consiglio o da una tabella del database o ancora meglio da un file di testo ben strutturato… se vuoi qualche script già pronto prova a cercare “php quote of the day script”, comunque se hai bisogno chiedi pure…

    Mi piace

  10. Ciao, volevo chiederti se sarebbe possibile fare una cosa del genere ma con dei blocchi di testo, nel senso che la mia idea sarebbe quella di mostrare nella home una casella contenente un consiglio per i clienti che varia giorno per giorno…

    Hai idea di come si possa fare?

    Mi piace

  11. Ottima guida

    Posso chiedere un consiglio? C’è un modo per modificare la query di ricerca in modo che venga mostrato un prodotto per categoria per (ad es.) tre categorie precise?

    Grazie in anticipo

    Mi piace

  12. ciao, devo dire che era proprio la funzione che cercavo.
    una volta copiato il file php funziona tutto ma mi da il seguente errore quando vado alla tab moduli:

    Il modulo seguente (s) non è stato possibile caricare:
    homefeatured (errore di analisi in /modules/homefeatured/homefeatured.php)
    homefeatured (classe mancante in /modules/homefeatured/homefeatured.php)

    prestashop versione 1.4.5.1

    Mi piace

  13. adesso devi copiare quel file homefeatured.php che hai creato nella cartella del modulo che contiene la vetrina cioè in /modules/homefeatured sovrascrivendo l’esistente e tutto dovrebbe andare (fatti una copia del file che sovrascrivi per sicurezza)

    Mi piace

  14. Ciao, sono un neofita, ho anche io la necessita di avere una vetrina “casuale”
    ho copiato il codice completo in un file txt e trasformato in php.
    ora però mi fermo perchè la cosa si fa complicata!
    puoi aiutarmi?
    grazie anticipate.
    Mario

    Mi piace

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione /  Modifica )

Google photo

Stai commentando usando il tuo account Google. Chiudi sessione /  Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione /  Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione /  Modifica )

Connessione a %s...