AC2ID Posted August 6, 2014 Share Posted August 6, 2014 (edited) Bonjour à tous, J'ai un petit problème à vous soumettre, car je n'ai pas trouvé de solution dans le forum, dans le doc ou sur le web pour le moment. Je viens de créer un module, pour lequel j'ai besoin d'ajouter un menu avec sous-menu dans le BO. Comme pour les autres menu principaux de PrestaShop, le menu que j'ajoute doit disposer d'une icône sur sa gauche. En version 1.6 pas de problème, l'implémentation ce fait par css. En version 1.5 l'implémentation se fait par l'ajout d'un fichier .gif et c'est là que j'ai le petit soucis suivant : - Si je place le .gif à la racine de mon module l'icône est bien affichée, mais je me retrouve avec un message d'erreur de structure lorsque que je le soumet au validateur. - Si je place le . gif dans un répertoire /img ou /img/t de mon module, je n'ai plus de message d'erreur de structure lorsque que je le soumet au validateur, mais l'icon ne s'affiche plus, Ou dois-je placer ce .gif dans mon module pour que mon icon soit affichée et que mon module soit validé sans erreur ? Merci d'avance pour votre aide. Edited August 6, 2014 by Crokeco (see edit history) Link to comment Share on other sites More sharing options...
AC2ID Posted August 6, 2014 Author Share Posted August 6, 2014 Oui, mais non. Pour la création du menu, je n'ai nullement besoin de fichier css (sauf en v1.6) ou tpl. En fait, c'est Prestashop qui va chercher lui même les icônes dans le bon répertoire. En consultant la console du navigateur on remarque qu'il va chercher les icônes de ces menus natifs dans le répertoire img/t à la racine du site et dans le cas de module dans modules/nom_du_module. J'en conclus qu'il y a une incohérence ou bug par rapport à la structure exigée pour la création du module qui neccessite la création de menu dans le BO. A moins que l'on puisse spécifier le chemin via une méthode de la casse tab.php, mais laquelle ? Merci pour votre réponse. Link to comment Share on other sites More sharing options...
AC2ID Posted August 6, 2014 Author Share Posted August 6, 2014 De savoir là où je suis, n'a pas d'importance, car il s'agit du menu du back office je peux donc me trouver n'importe où dans l'admin. Ce que je sais, c'est que Prestashop génère l'url des icônes du menu qui est affiché grâce au fichier header.tpl qui se trouve dans admin/themes/default/template/ . Je pense qu'en trouvant le contrôler qui assign la variable smarty, me permettra de comprend l'origine du soucis. Link to comment Share on other sites More sharing options...
AC2ID Posted August 6, 2014 Author Share Posted August 6, 2014 (edited) Merci, mais l'override du template ne règlera pas le problème. Au final, il n'y a pas de réponse (solution) à ma première question, car après une analyse un peu plus poussée, il s'agit : - Soit d'un bug de PrestaShop en version 1.5 - Soit d'un bug du validateur de module lorsqu'il check la structure du module. A mon sens, le bug vient plus de la version 1.5 de PrestaShop. Je m'explique, l'assignation des variables smarty pour le fichier header.tpl (qui génère l'affichage du menu en BO) est assurée par la méthode initHeader() du contrôleur AdminController.php. C'est dans ce dernier que le chemin vers le fichier de l'icône est généré. Lorsqu'il s'agit d'un élément du menu construit depuis un module, le contrôleur génère le chemin sur la base du répertoire des modules, du nom du module, mais sans ajouter le répertoire /img qu'exige le validateur de module. Comme le montre l'extrait de code ci-dessous (vers ligne 1360) : if (trim($tab['module']) != '') { $path_img = _PS_MODULE_DIR_.$tab['module'].'/'.$tab['class_name'].'.png'; // Relative link will always work, whatever the base uri set in the admin $img = '../modules/'.$tab['module'].'/'.$tab['class_name'].'.png'; } Dans lequel, il conviendrai d'ajouter img/ dans la variable $img : if (trim($tab['module']) != '') { $path_img = _PS_MODULE_DIR_.$tab['module'].'/'.$tab['class_name'].'.png'; // Relative link will always work, whatever the base uri set in the admin $img = '../modules/'.$tab['module'].'/img/'.$tab['class_name'].'.png'; } En résumé la solution ou plutôt le choix d'une "rustine" peut se faire : - Soit par un override de la méthode initHeader() du contrôleur AdminController.php, mais au risque de déplacer la problématique sur d'autre module qui aurait contournés ce bug d'une autre manière. - Soit d'intégrer une petit bout de code en javascript pour modifier le chemin après le chargement des pages du BO. - Soit de laisser l'image à la racine du répertoire du module et ignorer le message d'erreur du validateur de module. Je pense que je vais opter pour le choix 3... Du coup, je réfléchi à comment je vais modifier le titre de mon Topic [Résolu] ou [Débuggé]... Merci d'avoir essayé de trouver une solution à mon petit soucis. Edited August 6, 2014 by Crokeco (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