Jump to content

Ajouter un champ dans une catégorie de produit sur Prestashop


Recommended Posts

Je suis sur Prestashop 1.7 et je voudrais ajouter un champ ysiwyg personnalisé dans la page de la catégorie de produit et pouvoir afficher sa valeur dans le front-office. J'ai déjà réussi à mettre en place le champ wysiwyg dans le back-office mais je n'arrive pas à récupérer la valeur pour l'insérer dans le modèle et l'afficher côté client.

Voici mon module :

 

<?php


if (!defined('_PS_VERSION_'))
    exit;

class Wysi extends Module
{
    public function __construct()
    {
        $this->name = 'wysi';
        $this->tab = 'front_office_features';
        $this->version = '0.1';
        $this->author = 'advisa';
        $this->need_instance = 0;

        parent::__construct();

        $this->displayName = $this->l('wysi');
        $this->description = $this->l('Add WYSIWYG field in Product Category');
    }

    public function install()
    {
        return parent::install() &&
            $this->registerHook('displayBackOfficeCategory');
    }

    public function uninstall()
    {
        return parent::uninstall();
    }
    public function hookDisplayBackOfficeCategory($params)
    {
        return $this->display(__FILE__, 'wysi.tpl');

    }

Et voici mon template qui affiche le champ wysiwyg

 

<label for="texteSeo">Texte SEO</label><br>

<textarea class= "autoload_rte" id="id" name="name" rows="10" cols="45"></textarea>

 

Merci d'avance !!

Link to comment
Share on other sites

J'ai tenter de faire un override mais j'ai un problème avec du coup

 

<?php


if (!defined('_PS_VERSION_'))
    exit;

class Wysi extends Module
{
    public function __construct()
    {
        $this->name = 'wysi';
        $this->tab = 'front_office_features';
        $this->version = '0.1';
        $this->author = 'advisa';
        $this->need_instance = 0;

        parent::__construct();

        $this->displayName = $this->l('wysi');
        $this->description = $this->l('Add WYSIWYG field in Product Category');
    }

    public function install()
    {
        return parent::install() &&
            $this->registerHook('displayBackOfficeCategory');
    }

    public function uninstall()
    {
        return parent::uninstall();
    }
    public function _installSql() {
        $sqlInstall = "ALTER TABLE " . _DB_PREFIX_ . "category_lang ADD composition TEXT null";
        $returnSql = Db::getInstance()->execute($sqlInstall);
        return $returnSql;
    }
    public function hookDisplayBackOfficeCategory($params)
    {
        $texteSeo = new Category($params['id_texteSeo']);

        $this->context->smarty->assign(array(
            'texteSeo' => $texteSeo->composition,
        ));
        return $this->display(__FILE__, 'wysi.tpl');
    }
}

 

class Category extends CategoryCore
{
    public $composition;

    public function __construct(
        $id_product = null,
        $full = false,
        $id_lang = null,
        $id_shop = null,
        Context $context = null
    ) {
        self::$definition['fields']['composition'] = array(
            'type' => self::TYPE_HTML,
            'lang' => false,
            'required' => false,
            'validate' => 'isCleanHtml'
        );

        parent::__construct($id_product, $full, $id_lang, $id_shop, $context);
    }
}

 

Dans le back-office je reçois l'erreur suivante

 

Quote

[Semantical Error] The annotation "@AdminSecurity" in method PrestaShopBundle\Controller\Admin\Sell\Catalog\CategoryController::indexAction() was never imported. Did you maybe forget to add a "use" statement for this annotation?

Donc j'ai essayer de mettre

 

 use PrestaShopBundle\Controller\Admin\Sell\Catalog\CategoryController

Mais cela ne change pas ce message d'erreur

Edited by Guillaume_KS (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...