Displaying more Supplier information on the Product Page in PrestaShop

Displaying more information about a product’s Supplier, directly on the product page, is quite easy in PrestaShop. It only needs an override and a tiny modification to the product template.

Overriding the Product Controller

Unless you want to hard-modify the original ProductController, you would need an override to assign all the necessary Supplier data to your product page.

Create a new file in override/controllers/front, and name it ProductController.php. Open it up and add some generic override code inside php tags:

[php]
class ProductController extends ProductControllerCore
{

}
[/php]

We have to override the initContentMethod

[php]
class ProductController extends ProductControllerCore
{
public function initContent()
{
parent::initContent();
}
}
[/php]

Make sure you call the parent at the very beginning of it, then add the following inside:

[php]
if($this->product->id_supplier)
{

$id_supplier_address = Address::getAddressIdBySupplierId($this->product->id_supplier);
$supplier_address = new Address($id_supplier_address);
}
[/php]

First off, we are checking the current product has a supplier. Then, we need its address id, which we use to instantiate a new Address object that contains all of the information we seek.

At this point, we can simply assign all we want to the template:

[php]
if (Validate::isLoadedObject($supplier_address))
{
$this->context->smarty->assign(array(
‘supplier_country’=> $supplier_address->country,
‘supplier_company’=> $supplier_address->company,
‘supplier_address1’=> $supplier_address->address1,
‘supplier_postcode’=> $supplier_address->postcode,
‘supplier_city’=> $supplier_address->city,
‘supplier_phone’=> $supplier_address->phone,
‘supplier_state’ => State::getNameById($supplier_address->id_state),
‘supplier_vat_number’=> $supplier_address->vat_number,
));
}

[/php]

As an extra measure, we make sure the loaded address object is valid and exists

When you’re done modifying the file, reach the cache/ folder and erase class_index.php

Amending the product template

Now we are ready to display our data. Open product.tpl, located in your theme’s folder. You can choose any spot, I decided to go for the area below the social links in the center column.

[php htmlscript=”true”]
{if $product->id_supplier}
<h4><a href="{$link->getSupplierLink($product->id_supplier)}"><strong>{$product->supplier_name}</strong></a></h4>
<ul>
<li>{$supplier_address1}</li>
<li>{$supplier_postcode}</li>
<li>{$supplier_city}, {$supplier_state}</li>
<li>{$supplier_country}</li>
{if $supplier_vat_number}
<li>{$supplier_vat_number}</li>
{/if}
</ul>

{/if}
[/php]

I am obviously checking if this product has a supplier, otherwise those variables would not be assigned. Save and refresh, you might need to clear cache in the back office (Advanced Parameters, Performance). We’re done!

Displaying more Supplier information on the Product Page in PrestaShop

Need PrestaShop Modules? Have a look at my Prestashop Addons Store!

Looking for quality PrestaShop web hosting? Look no further than Arvixe Web Hosting.

Tags: , | Posted under PrestaShop | RSS 2.0

Author Spotlight

Fabio Porta

Fabio has been involved in web development and design since 2005, when launched his first website at the age of 16. He’s now highly skilled in both client and server side development, along with design, and since August 2012 runs a successful website about PrestaShop tutorials and Prestashop Modules called Nemo’s Post Scriptum, at http://nemops.com

Leave a Reply

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