Jump to content

Besoin d'aide pour modifier les fichiers du back-office pour ajouter des variables sur les pages de catégorie et les pages CMS (PrestaShop 1.7.8.6)


Recommended Posts

Bonjour à tous,

J'ai récemment effectué des modifications dans ma base de données PrestaShop (version 1.7.8.6) en ajoutant des champs supplémentaires dans les tables ps_category_lang et ps_cms_lang. J'ai également effectué des modifications dans les fichiers cms.php et header-category.php en effectuant une surcharge (override) pour faire fonctionner les nouvelles variables.

Le texte provenant de ma base de données s'affiche correctement sur mon site. Cependant, il me reste une dernière étape à accomplir : je souhaite pouvoir ajouter du texte dans la base de données depuis le back-office, pour les pages de catégorie (juste en dessous du nom) et pour les pages CMS.

J'ai cherché pendant plusieurs heures dans les dossiers controllers/admin, mais je n'ai pas réussi à trouver les fichiers spécifiques à modifier pour ajouter cette fonctionnalité. J'ai consulté les fichiers AdminCategoriesController.php et AdminCmsController.php, mais ces fichiers n'existent plus.

Je suis conscient que les emplacements des fichiers peuvent varier en fonction de la version de PrestaShop utilisée et des surcharges effectuées. J'apprécierais donc grandement si quelqu'un pouvait me guider vers les fichiers appropriés à modifier pour ajouter du texte depuis le back-office pour les pages de catégorie et les pages CMS.

Toute aide serait vraiment appréciée. Merci d'avance !

Link to comment
Share on other sites

il y a 52 minutes, osyris a dit :

J'ai récemment effectué des modifications dans ma base de données PrestaShop (version 1.7.8.6) en ajoutant des champs supplémentaires dans les tables ps_category_lang et ps_cms_lang.

Première erreur, on ne touche jamais aux tables natives de PrestaShop.

Si vous voulez rajouter un truc, vous mettez en place une table supplémentaire.

Link to comment
Share on other sites

2 hours ago, Mediacom87 said:

Première erreur, on ne touche jamais aux tables natives de PrestaShop.

Si vous voulez rajouter un truc, vous mettez en place une table supplémentaire.

J'ai suivi ce tutoriel pour ajouter un champ à une catégorie, et j'ai suivi la même méthode pour ajouter un champ à une page CMS.

Link to comment
Share on other sites

Bonjour,

Puisque j'ai bien suivi le tutoriel, je ne pense pas avoir mal fait les choses.

Par contre, personne n'aurait une idée où se trouvent les fichiers controllers pour les fichiers : cms.php et header-category.php pour PrestaShop 1.7.8.6.

Ça me serait d'une grande aide.

Link to comment
Share on other sites

  • 3 weeks later...

idem je serai fortement intéressé par une réponse. En effet précédemment j'avais modifier le champs description pour le transformer en éditeur de texte. Et là sur cette version impossible de remettre la main sur les fichiers qui gère ce champs.

 

Merci par avance 

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

il y a 2 minutes, osyris a dit :

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.

Il doit être possible de passer par des alternatives ou sinon se former à symfony pour comprendre comment sont articulées les nouvelles pages.

Link to comment
Share on other sites

  • 5 months later...
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

 

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

5 minutes ago, Mediacom87 said:

C'est open source, donc vous pouvez faire la doc ... c'est la réponse souvent retournée concernant ce sujet.

Bah non justement les logiciels open-source n'ont pas tous une doc à minima. 
Oui c'est open-source donc déjà trés bien dans le principe. 
Mais le problème c'est que Prestashop n'est pas tout seul et peine à exister (cf source ). 

On peut considérer que la doc est dispensable mais pour inciter et populariser un logiciel ce n'est pas - je pense -  l'idée la plus brillante.
A défaut de doc, les forums, leurs qualités et le nombre d'utilisateurs du logiciel sont 3 autres critères qui font que l'on va choisir un logiciel face à un autre. 

Je ne suis pas le seul à le regretter d'après mes différentes lectures. 



 









 

Link to comment
Share on other sites

il y a 6 minutes, BKaernel a dit :

Bah non justement les logiciels open-source n'ont pas tous une doc à minima. 
Oui c'est open-source donc déjà trés bien dans le principe. 
Mais le problème c'est que Prestashop n'est pas tout seul et peine à exister (cf source ). 

On peut considérer que la doc est dispensable mais pour inciter et populariser un logiciel ce n'est pas - je pense -  l'idée la plus brillante.
A défaut de doc, les forums, leurs qualités et le nombre d'utilisateurs du logiciel sont 3 autres critères qui font que l'on va choisir un logiciel face à un autre. 

Je ne suis pas le seul à le regretter d'après mes différentes lectures.

Vous prêchez un convaincu.

Je vous communique juste la réponse que j'ai souvent entendue sur le sujet.

 

Link to comment
Share on other sites

10 minutes ago, Mediacom87 said:

Vous prêchez un convaincu.

Je vous communique juste la réponse que j'ai souvent entendue sur le sujet.

 

La réponse venant de diffuseurs de logiciels ou de développeurs spécialisés qui défendent leur pré carré ? :)

Link to comment
Share on other sites

il y a 36 minutes, BKaernel a dit :

La réponse venant de diffuseurs de logiciels ou de développeurs spécialisés qui défendent leur pré carré ? :)

Et oui.

Perso, je participe à mon niveau depuis longtemps, sous forme de tuto ou sur ce forum, mais nous sommes de moins en moins nombreux à donner gratuitement de notre temps.

Ici, nous sommes dans le monde du commerce, pas de passionnés voulant un simple blog, donc les attentes et les tâches ne sont pas les mêmes.

Link to comment
Share on other sites

22 hours ago, BKaernel said:

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

 

Suite à mes actions antérieures, j'ai observé que le titre, qui remplace le nom de la catégorie, s'affiche correctement en mode responsive sur un ordinateur lorsque je consulte la page d'une catégorie. Cependant, dès que j'accède à ces pages depuis un smartphone, le titre cesse de s'afficher, laissant uniquement apparaître le nom de la catégorie.

J'ai tenté d'appliquer la méthode en intégrant dans un hook déjà présent dans le back-office pour les descriptions des fiches produits, et cela fonctionne parfaitement, comme tu l'as souligné, sans nécessiter d'override. Cependant, je rencontre des difficultés à afficher le contenu depuis la base de données sur les fiches produits en ligne.

Link to comment
Share on other sites

On 12/6/2023 at 11:17 AM, osyris said:

Suite à mes actions antérieures, j'ai observé que le titre, qui remplace le nom de la catégorie, s'affiche correctement en mode responsive sur un ordinateur lorsque je consulte la page d'une catégorie. Cependant, dès que j'accède à ces pages depuis un smartphone, le titre cesse de s'afficher, laissant uniquement apparaître le nom de la catégorie.

J'ai tenté d'appliquer la méthode en intégrant dans un hook déjà présent dans le back-office pour les descriptions des fiches produits, et cela fonctionne parfaitement, comme tu l'as souligné, sans nécessiter d'override. Cependant, je rencontre des difficultés à afficher le contenu depuis la base de données sur les fiches produits en ligne.

Si les données s'affichent à certains endroits et pas à d'autres, cela signifie déjà dire qu'elles existent. 
Donc, c'est sûrement un problème d'affichage en front.
Vas voir du coté des fichiers TPL et SMARTY pour les variables dans le thème.

Le module lui gère l'intégration de nouvelles données dans la base de donnée. 
Sauf si tu crées un hook avec du TPL dedans bien sûr.

Autre possibilité, le CSS avec un mediaqueries (clic droit INSPECTER est ton ami). 

====

Sinon, pour revenir sur le sujet de la doc en open-source un peu digne et qui donne franchement envie, 
Voici un exemple : DRUPAL 9

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

20 minutes ago, Mediacom87 said:

772762601_topicresolu.png.da616ed9356e78ecf3a7b296fea2b2fd.png

Le sujet n'est pas complétement résolu, car je souhaite pouvoir ajouter du texte dans la base de données depuis le back-office, pour les pages de catégorie (juste en dessous du nom).

Je vais regarder ce qui a été suggéré un peu plus haut pour atteindre le résultat escompté.

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