Home>Guide>Come prelevare i prodotti nelle categorie speciali in PrestaShop

Come prelevare i prodotti nelle categorie speciali in PrestaShop


Come prelevare i prodotti nelle categorie speciali in PrestaShop

Spesso nello sviluppo di moduli di PrestaShop, o semplicemente nel modificarne uno già esistente, potresti avere la necessità di prelevare un elenco di prodotti, magari con una caratteristica particolare in comune. Prestashop ha molte funzioni che consentono di risparmiare tempo e che possiamo utilizzare a questo scopo.
Vediamo come ottenere vari prodotti e gestirli.

  • Leggi l'articolo, ti bastano solo 1 minuto, 13 secondi
    Sei di fretta? Scarica il PDF e consultalo quando vuoi!

Prelevare i prodotti da una categoria tramite ID

La funzione che andremo ad utilizzare, è un metodo della classe Category, che si trova in:

classes/Category.php

Ecco la definizione del metodo:

public function getProducts( $id_lang, $p, $n, $order_by = null, $order_way = null, $get_total = false, $active = true, $random = false, $random_number_products = 1, $check_access = true, Context $context = null );

I parametri utilizzati dal metodo, sono:
$id_lang: ID della lingua in cui vogliamo ottenere i prodotti.
$p: numero di pagina, associato al successivo parametro.
$n: numero di prodotti per pagina.
$order_by: nome della colonna per cui si preferisce ordinare i prodotti recuperati.
$order_way: la modalità di ordinamento (crescente/decrescente).
$get_total: se impostato su true, restituisce solamente il numero totale di prodotti presenti nella categoria. Annulla il valore di $p ed $n.
$active: se impostato su true, restituisce solo i prodotti attivi.
$random: se true, recupera i prodotti in modalità casuale. Annulla il valore di $order_by e $order_way.
$random_number_products: numero di prodotti da restituire se è attivato random.
$check_access: se impostato su true, verifica se il cliente corrente può vedere i prodotti di questa categoria.

Ma vediamo un esempio pratico.
Ecco il metodo migliore per ottenere prodotti da qualsiasi categoria in PrestaShop, usato non solo nelle pagine delle categorie, ma anche da alcuni dei moduli di default:

// Recupera i primi 10 prodotti di una categoria
$category = new Category( 3 );
$products = $category->getProducts( $this->context->language->id, 1, 10 );

Nota come siano stati valorizzati solo i parametri obbligatori.

// Recupera il numero di prodotti totali per quella categoria
$category = new Category( 3 );
$products = $category->getProducts( $this->context->language->id, 1, 10, 'price', 'asc', true );

Nonostante siano stati impostati il campo di ordinamento e il metodo di ordinamento, essendo true il sesto parametro ($get_total), verra restituito solamente un intero corrispondente al numero totale di prodotti presenti nella categoria.

// Ottiene 10 prodotti in ordine casuale
$category = new Category( 3 );
$products = $category->getProducts( $this->context->language->id, 1, 10, 'price', 'asc', false, true );

Nonostante siano stati impostati il campo di ordinamento e il metodo di ordinamento, i prodotti verranno restituiti in ordine casuale, dal momento che è impostato su true l’ottavo parametro ($random).


Recuperare i prodotti scontati

Il metodo che andiamo ad utilizzare è:

Product::getPricesDrop( $id_lang, $page_number = 0, $nb_products = 10, $count = false, $order_by = null, $order_way = null, $beginning = false, $ending = false, Context $context = null );

metodo statico della classe Product, che si trova in:

classes/Product.php

In questo caso, trattandosi di una metodo statico, non è necessario istanziare un oggetto della classe Product:

// Recupera 10 prodotti scontati
$products = Product::getPricesDrop( (int)$this->context->language->id, 0, 10 );
// Recupera 10 prodotti scontati, in ordine di prezzo crescente, ma la cui offerta parte il 01 gennaio 2018
$products =  Product::getPricesDrop( (int) $this->context->language->id, 0, 10, false, 'price', 'asc', '2018-01-01 00:00:00' );

Recuperare i prodotti più venduti

Il metodo che andiamo ad utilizzare è:

ProductSale::getBestSales( $id_lang, $page_number = 0, $nb_products = 10, $order_by = null, $order_way = null );

definita sempre nella classe Product.

Ecco un esempio:

// Recupera i 10 prodotti più venduti
$products = ProductSale::getBestSales( $this->context->language->id, 0, 10 );

Recuperare i nuovi arrivi

Il metodo che andiamo ad utilizzare è:

Product::getNewProducts( $id_lang, $page_number = 0, $nb_products = 10, $count = false, $order_by = null, $order_way = null, Context $context = null );

definita ache questa nella class Product.

Come utilizzarla? È presto detto:

// Preleva 10 prodotti considerati come nuovi arrivi
$products = Product::getNewProducts( (int) $this->context->language->id, 0, 10 );


Ti è piaciuto questo articolo? Regalami un click per ripagarmi dello sforzo



Code4Life ti è stato utile? Sostienici con una donazione!

Dona con PayPal

Hai trovato interessante l’articolo? Allora ti consiglio di leggere:

Nascondere la versione di WordPress

Nascondere la versione di WordPress


Aumenta la sicurezza del tuo sito WordPress nascondendone la versione utilizzata, evitando di fornire informazioni da sfruttare a tuo svantaggio.

Come personalizzare un input range con CSS

Come personalizzare un input range con CSS


Ecco un semplicissimo snippet che ti permette di dare un stile del tutto personalizzato agli elementi HTML5 di tipo input range.

Oppure cerca tra gli articoli correlati


E tu cosa ne pensi? Condividi la tua opinione e discutiamone insieme
La tua email non sarà resa pubblico o utilizzata per inviarti spam, te lo prometto

Iscrivimi alla newsletter per ricevere news ed aggiornamenti
Utilizziamo piattaforme di terze parti per l’invio di newsletter. (Informativa sulla privacy)
Tienimi aggiornato su questo articolo
Ricevi una email di notifica quando qualcuno scriverà un commento a questo articolo. (Informativa sulla privacy)
Ricorda i miei dati per la prossima volta che scriverò un commento
Il tuo nome e la tua email verranno salvati in un cookie in questo browser. (Informativa sulla privacy)