Back to Top

How to create a Product Grid listing same as Prestashop Theme | in Prestashop V-1.7 Module

Updated 28 June 2019

Lets first understand the problem, if you want a grid view of products on your Prestashop controller in a module like this in the screen shot


how to get this view in Prestashop, will you start this by writing a template and css for the same, I don’t think will be a good idea.

I am telling you a nice and simple way to get this view,

and the amazing fact is that what if there are a new theme installed in the prestashop, yes the solution will be compatible to any theme. see this in Prestashop Responsive Inventive Theme


so lets straight come to the coding part, here the first step is to use some needed packages at the top of your module class,

Searching for an experienced
Prestashop Company ?
Find out More
use PrestaShop\PrestaShop\Adapter\Image\ImageRetriever;
use PrestaShop\PrestaShop\Adapter\Product\PriceFormatter;
use PrestaShop\PrestaShop\Core\Product\ProductListingPresenter;
use PrestaShop\PrestaShop\Adapter\Product\ProductColorsRetriever;

now create a front controller or hook and return a smarty file from this.

and write the following code on this smarty template file,

{foreach from=$disountProducts item="product"}
   <li class="wk_product_list col-md-3 col-sm-4 col-xs-12">
     {include file="catalog/_partials/miniatures/product.tpl" product=$product}

as you can see this here I have directly include a smarty template file which is including from theme.

so obviously will be compatible with the current theme ­čÖé

I include the templete file in a foreach loop of products ($disountProducts)

now the question is what is in this variable $disountProducts.

of course the product details, but what is the format and how to create this.

so lets create this array.

/*products to show in grid*/
$discountedProducts = Product::getPricesDrop((int)$this->context->language->id);

here in $discountedProducts key id_products is required, other needed data will be assemble later.

so now the next step is to create the needed class objects,

$assembler = new ProductAssembler($this->context);
$presenterFactory = new ProductPresenterFactory($this->context);

$presentationSettings = $presenterFactory->getPresentationSettings();

$presenter = new ProductListingPresenter(
    new ImageRetriever(
    new PriceFormatter(),
    new ProductColorsRetriever(),

now come to the last step to get the required array.

$products_for_template = [];
foreach ($discountedProducts as $productDetail) {
    $products_for_template[] = $presenter->present(

here I use $assembler->assembleProduct($productDetail) to assemble the needed product details.

thats it.


. . .

Leave a Comment

Your email address will not be published. Required fields are marked*

Be the first to comment.

Back to Top

Message Sent!

If you have more details or questions, you can reply to the received confirmation email.

Back to Home