Jump to content

[RESOLU] Personnaliser Page Catégorie


Recommended Posts

Bonjour à tous,

 

Voilà plusieurs semaines que mes recherches sont restées vaines. Je suis à la recherche d'un module qui permettrait de personnaliser les pages catégorie de mon prestashop.

 

Exemple : Je dispose d'une catégorie mère qui regroupe des sous catégories :

Catégorie 1
    Catégorie A

    Catégorie B

    Catégorie C

 

Lorsqu'un utilisateur affiche la catégorie 1, cela affiche les produits présents dans les catégories A, B et C. Or, chacune de ces sous-catégorie dispose de nombreux produits ce qui propose donc à l'utilisateur de multiples pages. Le taux de rebond sur cette page est affligeant et pourtant elle est la clés de mon référencement et figure parmi les pages les plus visitées de ma boutique. 

 

Je souhaiterais installer un module qui me permettrait d'afficher ce que je souhaite sur la page de la catégorie 1. Si possible en HTML. En gros, plutôt que de proposer une page qui affiche une multitude de produits de façon anarchique, je souhaiterais afficher des bannières et du texte. J'avais donc bien pensé à étendre le nombre de caractère de la description de la catégorie et y insérer mon code HTML directement depuis le back-office, cependant cette solution "pirate" n'est pas satisfaisante en terme de rendu.

 

Quelqu'un aurait une idée ?

 

Merci d'avance

 

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

  • 2 weeks later...

Bonjour à tous,

 

Je me permet de reformuler ma demande qui semble un poil complexe :

Est-il possible, depuis le fichier category.tpl de faire appel à un fichier particulier lorsqu'un catégorie particulière est affichée :

En gros, je souhaiterais lorsque la catégorie portant l'ID 7 est appelée par l'utilisateur que sur cette page on affiche le fichier id-7.tpl (par exemple) ? 

 

Merci d'avance pour vos retours :) 

Link to comment
Share on other sites

  • 2 weeks later...

Bonjour,

 

Je ne perçois pas bien le problème que vous posez. Par défaut sur la page catégorie prestashop affiche l'image de la catégorie, la description, les sous catégorie, ...

 

Vous  désirez un fonctionnement différent ? 

 

Soyez plus précis, nous pouvons bien vous aider. Contactez nous par mail si vous le voulez bien :  [Modéré veuillez respecter le thème du forum]

Bonjour

 

Recherche d'un module ou d'un thème

Vous cherchez à ajouter des fonctions à PrestaShop ou à modifier son apparence et avez besoin de conseils ? Postez votre demande ici !

 

 

Toute aide apportée doit être faite sur le forum et non par e-mail, en-dehors de proposition de réponse par e-mail c'est supposé être une offre payante.

Link to comment
Share on other sites

dans le fichier controllers/front/CategoryController.php

 

vous trouverez ce code

     /**  Initializes page content variables   **/

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

        $this->setTemplate(_PS_THEME_DIR_.'category.tpl');

celui-ci peut donc être modifié, en faisant un fichier d'override, afin d'afficher "category_html7.tpl" au lieu de category.tpl selon l'ID de la catégorie.

 

 

voici l'override à appeller "CategoryController.php" et à mettre ici :

  • /override/controllers/front/CategoryController.php
class CategoryController extends CategoryControllerCore
{

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

        if ($id_category = 7 ) {
            $this->setTemplate(_PS_THEME_DIR_.'category_html7.tpl');
        }        
        else {
            $this->setTemplate(_PS_THEME_DIR_.'category.tpl');
        }

        if (!$this->customer_access) {
            return;
        }

        if (isset($this->context->cookie->id_compare)) {
            $this->context->smarty->assign('compareProducts', CompareProduct::getCompareProducts((int)$this->context->cookie->id_compare));
        }

        // Product sort must be called before assignProductList()
        $this->productSort();

        $this->assignScenes();
        $this->assignSubcategories();
        $this->assignProductList();

        $this->context->smarty->assign(array(
            'category'             => $this->category,
            'description_short'    => Tools::truncateString($this->category->description, 350),
            'products'             => (isset($this->cat_products) && $this->cat_products) ? $this->cat_products : null,
            'id_category'          => (int)$this->category->id,
            'id_category_parent'   => (int)$this->category->id_parent,
            'return_category_name' => Tools::safeOutput($this->category->name),
            'path'                 => Tools::getPath($this->category->id),
            'add_prod_display'     => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
            'categorySize'         => Image::getSize(ImageType::getFormatedName('category')),
            'mediumSize'           => Image::getSize(ImageType::getFormatedName('medium')),
            'thumbSceneSize'       => Image::getSize(ImageType::getFormatedName('m_scene')),
            'homeSize'             => Image::getSize(ImageType::getFormatedName('home')),
            'allow_oosp'           => (int)Configuration::get('PS_ORDER_OUT_OF_STOCK'),
            'comparator_max_item'  => (int)Configuration::get('PS_COMPARATOR_MAX_ITEM'),
            'suppliers'            => Supplier::getSuppliers(),
            'body_classes'         => array($this->php_self.'-'.$this->category->id, $this->php_self.'-'.$this->category->link_rewrite)
        ));
    }
}

ensuite vous dupliquer votre fichier category.tpl et le renommez en category_html7.tpl et vous pouvez modifier le contenu comme bon vous semble dans ce fichier pour arriver à vos fins.

Link to comment
Share on other sites

  • 4 weeks later...

Bonjour,

 

Quels éléments souhaitez vous afficher sur votre page catégorie ?

Parce que créer une page par catégorie cela me semble alourdir le système pour pas grand chose, sauf si vous souhaitez des pages avec une organisation complètement différentes pour chaque catégorie

Vous pouvez tout à fait modifier la page category.tpl, si vous maîtrisez le html, smarty n'est pas trés difficile à comprendre.

 

Bonne journée

Link to comment
Share on other sites

Bonjour,

 

Je vais essayer ça et reviens vers vous avec les résultats. Merci beaucoup ! :)

 

Vous avez eu le temps de tester ? pourriez vous nous faire un retour ? Merci d'avance.

Link to comment
Share on other sites

Bonjour,

 

Quels éléments souhaitez vous afficher sur votre page catégorie ?

Parce que créer une page par catégorie cela me semble alourdir le système pour pas grand chose, sauf si vous souhaitez des pages avec une organisation complètement différentes pour chaque catégorie

Vous pouvez tout à fait modifier la page category.tpl, si vous maîtrisez le html, smarty n'est pas trés difficile à comprendre.

 

Bonne journée

 

C'est exactement ce que je cherche. 

 

Vous avez eu le temps de tester ? pourriez vous nous faire un retour ? Merci d'avance.

 

Oui, hélas cela ne fonctionne pas. Il affiche ma page category_html7.tpl sur toutes les catégories.

J'ai peut être fais une erreur en ce qui concerne le premier morceau de code que vous avez affiché 

 

 

dans le fichier controllers/front/CategoryController.php

 

vous trouverez ce code

  1. /** Initializes page content variables **/
  2.  
  3. public function initContent()
  4. {
  5. parent::initContent();
  6.  
  7. $this->setTemplate(_PS_THEME_DIR_.'category.tpl');

 

J'ai bel et bien ce code, mais quelle modification dois-je y apporter ? 

 

Merci pour votre aide :)

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

C'est exactement ce que je cherche. 

 

 

Oui, hélas cela ne fonctionne pas. Il affiche ma page category_html7.tpl sur toutes les catégories.

J'ai peut être fais une erreur en ce qui concerne le premier morceau de code que vous avez affiché 

 

 

J'ai bel et bien ce code, mais quelle modification dois-je y apporter ? 

 

Merci pour votre aide :)

 

je vous ai tout indiqué dans le premier post :  il faut mettre en place un override et non modifier le code source, de mon coté n'ayant pas eu de retour j'avais même oublié de tester, mais ça devrait fonctionner normalement .

Link to comment
Share on other sites

je viens de tester et effectivement y'avait un petit souci.. voici une version fonctionnelle

<?php

class CategoryController extends CategoryControllerCore
{

public function initContent()
    {
        parent::initContent();
				
		$category = ((int)$this->category->id);
		if ( $category==7 ) {			
            $this->setTemplate(_PS_THEME_DIR_.'category_html7.tpl');
        }        
        else {
            $this->setTemplate(_PS_THEME_DIR_.'category.tpl');
        }

        if (!$this->customer_access) {
            return;
        }

        if (isset($this->context->cookie->id_compare)) {
            $this->context->smarty->assign('compareProducts', CompareProduct::getCompareProducts((int)$this->context->cookie->id_compare));
        }

        // Product sort must be called before assignProductList()
        $this->productSort();

        $this->assignScenes();
        $this->assignSubcategories();
        $this->assignProductList();

        $this->context->smarty->assign(array(
            'category'             => $this->category,
            'description_short'    => Tools::truncateString($this->category->description, 350),
            'products'             => (isset($this->cat_products) && $this->cat_products) ? $this->cat_products : null,
            'id_category'          => (int)$this->category->id,
            'id_category_parent'   => (int)$this->category->id_parent,
            'return_category_name' => Tools::safeOutput($this->category->name),
            'path'                 => Tools::getPath($this->category->id),
            'add_prod_display'     => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
            'categorySize'         => Image::getSize(ImageType::getFormatedName('category')),
            'mediumSize'           => Image::getSize(ImageType::getFormatedName('medium')),
            'thumbSceneSize'       => Image::getSize(ImageType::getFormatedName('m_scene')),
            'homeSize'             => Image::getSize(ImageType::getFormatedName('home')),
            'allow_oosp'           => (int)Configuration::get('PS_ORDER_OUT_OF_STOCK'),
            'comparator_max_item'  => (int)Configuration::get('PS_COMPARATOR_MAX_ITEM'),
            'suppliers'            => Supplier::getSuppliers(),
            'body_classes'         => array($this->php_self.'-'.$this->category->id, $this->php_self.'-'.$this->category->link_rewrite)
        ));
    }
}

?>

voilà !

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