Jump to content

Différentes templates page produit (RESOLU)


Recommended Posts

Bonjour,

 

Voici une solution qui permet d'afficher un template spécifique en fonction de l'identifiant du produit.
Pour cela il faut surcharger la fonction initContent du controller ProductController

/**
	 * Assign template vars related to page content
	 * @see FrontController::initContent()
	 */
	public function initContent()
	{
		parent::initContent();

		//Si un template spécifique existe pour ce produit on l'utilise
		if ( file_exists(_PS_THEME_DIR_.'product-'.$this->product->id.'.tpl') ) {
			$this->setTemplate(_PS_THEME_DIR_.'product'.$this->product->id.'.tpl');
		}
		else
			$this->setTemplate(_PS_THEME_DIR_.'product.tpl');
	}

Par exemple si pour le produit identifiant 1, un template "product-1.tpl" existe il sera utilisé à la place du template standard.
( Tu peux également utiliser la référence du produit si nécessaire )

  • Like 1
Link to comment
Share on other sites

C'est faisable sur le même principe en se basant sur la catégorie par défaut du produit.

/**
	 * Assign template vars related to page content
	 * @see FrontController::initContent()
	 */
	public function initContent()
	{
		parent::initContent();

		//Template spécifique pour le produit
		if ( file_exists(_PS_THEME_DIR_.'product'.$this->product->id_category_default.'.tpl') ) {
			$this->setTemplate(_PS_THEME_DIR_.'product'.$this->product->id_category_default.'.tpl');
		}
		else
			$this->setTemplate(_PS_THEME_DIR_.'product.tpl');
	}

Par contre pour si tu veux le faire en fonction du contexte cela risque d’être un peu plus complexe.

Link to comment
Share on other sites

Merci Herve ! 

Ou dois je mettre l'ID de la catégorie ? 

 

 

 

Par contre pour si tu veux le faire en fonction du contexte cela risque d’être un peu plus complexe.

 

C'est à dire ? 

 

Je souhaite juste que pour la catégorie produit > ma template standard de page produit

puis pour une catégorie Pack > une template spécifique. 

Edited by julesfromparis (see edit history)
Link to comment
Share on other sites

J'ai testé ceci, mais sans résultats 

$this->context->smarty->assign('errors', $this->errors);
		
		
		if ($this->category->id==7){
$this->setTemplate(_PS_THEME_DIR_.'product_pack.tpl'); // template file for caregory id: 5
} else {
$this->setTemplate(_PS_THEME_DIR_.'product.tpl'); // DEFAULT template
}

 

Edited by julesfromparis (see edit history)
Link to comment
Share on other sites

Effectivement, 

 

il y a un tuto ici 

Mais je ne comprends pas ou on place l'ID de la catégorie… 

class ProductController extends ProductControllerCore
{
    public function initContent()
    {
        parent::initContent();
        
        /* Teste si le fichier existe ou non, sinon c'est le fichier par défaut qui est affiché */
        if (is_file(_PS_THEME_DIR_.'product_'. $this->product->id_category_default .'.tpl')) {
            $this->setTemplate(_PS_THEME_DIR_.'product_'. $this->product->id_category_default .'.tpl');
        } else {
            $this->setTemplate(_PS_THEME_DIR_.'product.tpl');        
        }
    }
}
Link to comment
Share on other sites

Bonjour, 

 

Ça marche enfin… Merci à Herve25 pour son aide. 

 

Voici comment procéder :

 

1 // Dans productcontroller (Overide) 

 

2 // Ligne 177 : Remplacer par 

public function initContent()
	{
		parent::initContent();

		//Template spécifique pour le produit
		if ( file_exists(_PS_THEME_DIR_.'product_'.$this->product->id_category_default.'.tpl') ) {
			$this->setTemplate(_PS_THEME_DIR_.'product_'.$this->product->id_category_default.'.tpl');
		}
		else
			$this->setTemplate(_PS_THEME_DIR_.'product.tpl');
 
3 // Ligne 292 Supprimer le code (Si non ça ne marche pas) : 
 
$this->setTemplate(_PS_THEME_DIR_.'product.tpl');		

4 // Créer une template avec product_7.tpl 
Cette template s'affichera pour les produits dont la catégorie est l'ID 7.  
 
Jules 
Edited by julesfromparis (see edit history)
Link to comment
Share on other sites

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...