osyris Posted May 16, 2023 Share Posted May 16, 2023 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 More sharing options...
Mediacom87 Posted May 16, 2023 Share Posted May 16, 2023 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 More sharing options...
osyris Posted May 16, 2023 Author Share Posted May 16, 2023 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 More sharing options...
osyris Posted May 24, 2023 Author Share Posted May 24, 2023 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 More sharing options...
LEGuitou06 Posted June 13, 2023 Share Posted June 13, 2023 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 More sharing options...
osyris Posted June 14, 2023 Author Share Posted June 14, 2023 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 More sharing options...
Mediacom87 Posted June 14, 2023 Share Posted June 14, 2023 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 More sharing options...
BKaernel Posted December 5, 2023 Share Posted December 5, 2023 (edited) 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 December 5, 2023 by BKaernel (see edit history) Link to comment Share on other sites More sharing options...
Mediacom87 Posted December 5, 2023 Share Posted December 5, 2023 Il y a 2 heures, BKaernel a dit : Peut-être l'émergence de "nouvelle solution" open-source finira de les speeder sur le sujet ? C'est open source, donc vous pouvez faire la doc ... c'est la réponse souvent retournée concernant ce sujet. Link to comment Share on other sites More sharing options...
BKaernel Posted December 5, 2023 Share Posted December 5, 2023 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 More sharing options...
Mediacom87 Posted December 5, 2023 Share Posted December 5, 2023 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 More sharing options...
BKaernel Posted December 5, 2023 Share Posted December 5, 2023 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 More sharing options...
Mediacom87 Posted December 5, 2023 Share Posted December 5, 2023 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 More sharing options...
osyris Posted December 6, 2023 Author Share Posted December 6, 2023 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 More sharing options...
BKaernel Posted December 8, 2023 Share Posted December 8, 2023 (edited) 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 December 8, 2023 by BKaernel (see edit history) Link to comment Share on other sites More sharing options...
Mediacom87 Posted December 8, 2023 Share Posted December 8, 2023 Le 06/12/2023 à 11:17 AM, osyris a dit : 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. une piste : https://support.google.com/accounts/answer/32050?hl=fr&co=GENIE.Platform%3DAndroid Link to comment Share on other sites More sharing options...
osyris Posted December 8, 2023 Author Share Posted December 8, 2023 Merci à vous deux. Sur les conseils de Mediacom87, j'ai supprimé les cookies sur mon smartphone. C'est tout bête de n'y avoir pas pensé. Link to comment Share on other sites More sharing options...
Mediacom87 Posted December 8, 2023 Share Posted December 8, 2023 Link to comment Share on other sites More sharing options...
osyris Posted December 8, 2023 Author Share Posted December 8, 2023 (edited) 20 minutes ago, Mediacom87 said: 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 December 8, 2023 by osyris (see edit history) Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now