Jump to content

Edit History

BKaernel

BKaernel

On 6/14/2023 at 6:39 PM, osyris said:

Depuis, je suis passé à la version 8.0.4 de PrestaShop, mais je n'ai toujours pas trouvé de solution.

Il est regrettable de constater l'absence de documentation précisant le rôle de chaque fichier.

Pourquoi faire une doc claire ? Prestashop est si populaire dans le monde que c'est inutile ! :-) C'est la French tech quoi...
Peut-être l'émergence de "nouvelle solution" open-source finira de les speeder sur le sujet ? 

Sinon, pour ta requête tu peux trouver des pistes de réponses dans les modules ps_ directement.

Regarde par exemple notamment la class Supplier ( ../classes/Supplier.php), tu trouveras la technique pour créer des tables dans la BDD
et notamment $definition [ fields ]

Sinon dans cette article, voici ta manip Prestashop : Ajouter des champs à une catégorie

J'ai testé ça marche. L'avantage c'est qu'il n'y pas d'override puisque tu crée une nouvelle class que tu intègres dans un hook existant avec catégorie.
Pour les CMS, ça marche aussi mais pour les page CMS dans des catégories, c'est moins évident. C'est 2 classes qui gèrent cela : CMS et CMSCategory.php

La partie concernant ta question sur la création de table dans la BDD est ici :

  /**
     * Installation du modèle
     * A ajouter dans l'installation du module
     */
    public static function installSql(): bool
    {
        try {
            //Création de la table avec les champs communs
            $createTable = Db::getInstance()->execute(
                "CREATE TABLE IF NOT EXISTS `"._DB_PREFIX_."hh_category_field`(
                `id_category_extra` int(10)  NOT NULL AUTO_INCREMENT,
                `id_category` INT(10) NOT NULL,
                `code` VARCHAR (50),
                `image_field` VARCHAR (50),
                PRIMARY KEY (`id_category_extra`)
                ) ENGINE=InnoDB DEFAULT CHARSET=UTF8;"
            );
            //Création de la table des langues
            $createTableLang = Db::getInstance()->execute(
                "CREATE TABLE IF NOT EXISTS `"._DB_PREFIX_."hh_category_field_lang`(
                `id_category_extra` int(10)  NOT NULL AUTO_INCREMENT,
                `id_shop` INT(10) NOT NULL DEFAULT '1',
                `id_lang` INT(10) NOT NULL,
                `description_seo` TEXT,
                PRIMARY KEY (`id_category_extra`,`id_shop`,`id_lang`)
                ) ENGINE=InnoDB DEFAULT CHARSET=UTF8;"
            );
        } catch (PrestaShopException $e) {
            return false;
        }
 
        return $createTable && $createTableLang;
    }

 Pour synfony, utile pour comprendre le fonctionnement de PS tu as des choses libre et bien faites Construisez un site web à l’aide du framework Symfony 5

 

BKaernel

BKaernel

On 6/14/2023 at 6:39 PM, osyris said:

Depuis, je suis passé à la version 8.0.4 de PrestaShop, mais je n'ai toujours pas trouvé de solution.

Il est regrettable de constater l'absence de documentation précisant le rôle de chaque fichier.

Pourquoi faire une doc claire ? Prestashop est si populaire dans le monde que c'est inutile ! :-) C'est la French tech quoi...
Peut-être l'émergence de "nouvelle solution" open-source finira de les speeder sur le sujet ? 

Sinon, pour ta requête tu peux trouver des pistes de réponses dans les modules ps_ directement.

Regarde par exemple notamment la class Supplier ( ../classes/Supplier.php), tu trouveras la technique pour créer des tables dans la BDD
et notamment $definition [ fields ]

Sinon dans cette article, voici ta manip Prestashop : Ajouter des champs à une catégorie

La partie concernant ta question sur la création de table dans la BDD est ici :

  /**
     * Installation du modèle
     * A ajouter dans l'installation du module
     */
    public static function installSql(): bool
    {
        try {
            //Création de la table avec les champs communs
            $createTable = Db::getInstance()->execute(
                "CREATE TABLE IF NOT EXISTS `"._DB_PREFIX_."hh_category_field`(
                `id_category_extra` int(10)  NOT NULL AUTO_INCREMENT,
                `id_category` INT(10) NOT NULL,
                `code` VARCHAR (50),
                `image_field` VARCHAR (50),
                PRIMARY KEY (`id_category_extra`)
                ) ENGINE=InnoDB DEFAULT CHARSET=UTF8;"
            );
            //Création de la table des langues
            $createTableLang = Db::getInstance()->execute(
                "CREATE TABLE IF NOT EXISTS `"._DB_PREFIX_."hh_category_field_lang`(
                `id_category_extra` int(10)  NOT NULL AUTO_INCREMENT,
                `id_shop` INT(10) NOT NULL DEFAULT '1',
                `id_lang` INT(10) NOT NULL,
                `description_seo` TEXT,
                PRIMARY KEY (`id_category_extra`,`id_shop`,`id_lang`)
                ) ENGINE=InnoDB DEFAULT CHARSET=UTF8;"
            );
        } catch (PrestaShopException $e) {
            return false;
        }
 
        return $createTable && $createTableLang;
    }

 Pour synfony, utile pour comprendre le fonctionnement de PS tu as des choses libre et bien faites Construisez un site web à l’aide du framework Symfony 5

 

×
×
  • Create New...