rquantin Posted November 7, 2015 Share Posted November 7, 2015 Bonjour, Je cherche une solution pour pouvoir filtrer ma liste de produits dans->Catalogue->Produits De base dans PS, il y a la possibilité de chercher soit par catégorie ou divers filtre en tête de colonne. J'aimerais ajouter dans cette en-entête, a coté de <État>, le filtre sur les produits <Disponible à la vente>. Quelqu'un a-t-il une solution ou a-t-il déjà manipuler le tableau du back office pour m'orienter dans ma recherche. Merci d'avance. QR Link to comment Share on other sites More sharing options...
herve25 Posted November 9, 2015 Share Posted November 9, 2015 Bonjour,J'avais écrit un article sur comment rajouter la référence fournisseur dans la liste.Le mode de fonctionnement doit être similaire : http://www.h-hennes.fr/blog/2015/08/11/prestashop-afficher-la-reference-fournisseur-dans-la-liste-admin-des-produits/ Cordialement, Link to comment Share on other sites More sharing options...
rquantin Posted November 9, 2015 Author Share Posted November 9, 2015 Bonjour, Merci herve25 pour cette solution, Je l'ai essayé mais j'ai un problème sur la requête que je n'arrive pas à identifier: <?phpclass AdminProductsController extends AdminProductsControllerCore{ public function __construct() { parent::__construct(); // On joint la table ps_product_shop $this->_join .= ' LEFT JOIN '._DB_PREFIX_.'product_shop sa ON ( a.id_product = sa.id_product )'; //Ajout du champs dans la liste des champs affichés dans l'amdin $this->fields_list['available_for_order'] = array( 'title' => $this->l('Dispo'), 'active' => 'available_for_order', 'filter_key' => 'ps!available_for_order', 'align' => 'text-center', 'type' => 'bool', 'class' => 'fixed-width-sm', 'orderby' => 'false' ); }} Lors de l'affichage dans le back office il y a une erreur de requête car effectivement le champ "available_for_order" ce trouve aussi bien dans la table "ps_product" que dans la table "ps_product_shop". De plus la table "product_shop" est déjà en déclaration LEFT JOIN dans le controllers est-il nécéssaire de la remettre? Merci pour vos retour. CT Link to comment Share on other sites More sharing options...
herve25 Posted November 9, 2015 Share Posted November 9, 2015 Effectivement le join n'est pas nécessaire dans votre cas car les données sont déjà présentes. Voici donc un code qui fonctionne : <?php class AdminProductsController extends AdminProductsControllerCore { public function __construct() { parent::__construct(); //Ajout du champs dans la liste des champs affichés dans l'amdin $this->fields_list['available_for_order'] = array( 'title' => $this->l('Dispo'), 'active' => 'available_for_order', 'filter_key' => 'a!available_for_order', // remplace a par sa pour récupérer les données de la table product_shop 'align' => 'text-center', 'type' => 'bool', 'class' => 'fixed-width-sm', 'orderby' => 'false' ); } } ?> Link to comment Share on other sites More sharing options...
rquantin Posted November 9, 2015 Author Share Posted November 9, 2015 Merci pour la réponse, J'ai mis le code dans le override, mais j'ai maintenant un message dans le back: Mauvaise requête SQLColumn 'available_for_order' in where clause is ambiguous De quoi ça peut venir ? Link to comment Share on other sites More sharing options...
herve25 Posted November 9, 2015 Share Posted November 9, 2015 Quelle version de prestashop ?( J'ai testé sur une 1.6.0.14 le code du message précédent sans erreur )C'est le champ filter_key qui est important. Link to comment Share on other sites More sharing options...
rquantin Posted November 9, 2015 Author Share Posted November 9, 2015 je suis sur la v 1.6.1.2 Link to comment Share on other sites More sharing options...
herve25 Posted November 9, 2015 Share Posted November 9, 2015 Je viens de tester sur cette version et le code fonctionne très bien.C'est la ligne : 'filter_key' => 'a!available_for_order', qui permet d'éviter cette erreur. Link to comment Share on other sites More sharing options...
rquantin Posted November 9, 2015 Author Share Posted November 9, 2015 Je ne comprends pas ! Je viens de refaire le test avec ceci: le fichier override: <?php class AdminProductsController extends AdminProductsControllerCore { public function __construct() { parent::__construct(); //Ajout du champs dans la liste des champs affichés dans l'amdin $this->fields_list['available_for_order'] = array( 'title' => $this->l('Dispo'), 'active' => 'available_for_order', 'filter_key' => 'a!available_for_order', // remplace a par sa pour récupérer les données de la table product_shop 'align' => 'text-center', 'type' => 'bool', 'class' => 'fixed-width-sm', 'orderby' => 'false' ); } } ?> Voilà le résultat que me donne le BO: Mauvaise requête SQLColumn 'available_for_order' in where clause is ambiguous Link to comment Share on other sites More sharing options...
herve25 Posted November 10, 2015 Share Posted November 10, 2015 Effectivement au temps pour moi je n'avais pas testé le filtre jusqu'au bout.En mettant le code suivant le filtrage fonctionne : $this->fields_list['a!available_for_order'] = array( 'title' => $this->l('Dispo'), 'active' => 'a!available_for_order', 'filter_key' => 'a!available_for_order', 'align' => 'text-center', 'type' => 'bool', 'class' => 'fixed-width-sm', 'orderby' => 'false' ); Par contre les images ne s'affichent plus. Link to comment Share on other sites More sharing options...
rquantin Posted November 10, 2015 Author Share Posted November 10, 2015 Résolu Super !! il fonction impec! et j'ai les images aussi ! Merci beaucoup ! Link to comment Share on other sites More sharing options...
Pierre Webwalker Posted February 9, 2016 Share Posted February 9, 2016 (edited) Bonjour à tous, Je relance ce sujet pour tenter de le mettre en œuvre, j'ai exactement le même besoin, celui d'afficher sur la liste des produits une colonne "Disponible à la vente". Je ne suis pas développeur php et je n'ai pas beaucoup d'expérience de la surcharge. - J'ai donc copié le fichier AdminProductsController.php dans le dossier override/controllers/admin/. - J'ai essayé d'ajouter, dans ce fichier, le code tel quel, et j'ai une page blanche. En tentant de comprendre le fichier AdminProductsController, - j'ai essayé d'extraire du code proposé par Herve25, les lignes //Ajout du champs dans la liste des champs affichés dans l'amdin $this->fields_list['available_for_order'] = array( 'title' => $this->l('Dispo'), 'active' => 'a!available_for_order', 'filter_key' => 'a!available_for_order', // remplace a par sa pour récupérer les données de la table product_shop 'align' => 'text-center', 'type' => 'bool', 'class' => 'fixed-width-sm', 'orderby' => 'false' ); et de les mettre juste après la ligne 76 : parent::__construct(); Et là, la liste s'affiche bien, mais pas la colonne Dispo... J'ai essayé différents trucs, soit je n'ai pas la colonne, soit j'ai un message erreur, soit une page blanche... Je dois buter sur un problème de méthode de surcharge.. Je suis sur PS 1.6.0.14. Vous avez une idée de ce que je ne fais pas bien ? Merci pour votre aide. Edited February 9, 2016 by pierrewebmaster (see edit history) Link to comment Share on other sites More sharing options...
herve25 Posted February 10, 2016 Share Posted February 10, 2016 Bonjour, Essayez plutot avec le code du dernier message : $this->fields_list['a!available_for_order'] = array( 'title' => $this->l('Dispo'), 'active' => 'a!available_for_order', 'filter_key' => 'a!available_for_order', 'align' => 'text-center', 'type' => 'bool', 'class' => 'fixed-width-sm', 'orderby' => 'false' ); Lorsque vous faites une surcharge d'une classe inutile d'en reprendre tout le contenu. Commencez uniquement avec ce code. class AdminProductsController extends AdminProductsControllerCore { } Cordialement, Link to comment Share on other sites More sharing options...
Pierre Webwalker Posted February 16, 2016 Share Posted February 16, 2016 Bonjour à tous Merci herve25 pour cette réponse Désolé pour le temps de réaction mais je dois aussi chercher un job :-( Merci aussi pour le conseil de surcharge , mais je dois mal m'y prendre. J'ai donc essayé de mettre dans mon fichier override/controllers/admin/AdminProductsController.php class AdminProductsController extends AdminProductsControllerCore { $this->fields_list['a!available_for_order'] = array( 'title' => $this->l('Dispo'), 'active' => 'a!available_for_order', 'filter_key' => 'a!available_for_order', 'align' => 'text-center', 'type' => 'bool', 'class' => 'fixed-width-sm', 'orderby' => 'false' ); } La liste des produits en BO m'affiche ça : class AdminProductsController extends AdminProductsControllerCore { $this->fields_list['a!available_for_order'] = array( 'title' => $this->l('Dispo'), 'active' => 'a!available_for_order', 'filter_key' => 'a!available_for_order', 'align' => 'text-center', 'type' => 'bool', 'class' => 'fixed-width-sm', 'orderby' => 'false' ); } J'ai essayé le code de rquantin avec votre correction comme ceci : <?php class AdminProductsController extends AdminProductsControllerCore { public function __construct() { parent::__construct(); //Ajout du champs dans la liste des champs affichés dans l'amdin $this->fields_list['a!available_for_order'] = array( 'title' => $this->l('Dispo'), 'active' => 'a!available_for_order', 'filter_key' => 'a!available_for_order', 'align' => 'text-center', 'type' => 'bool', 'class' => 'fixed-width-sm', 'orderby' => 'false' ); } } ?> Et là, j'ai une page blanche. Merci pour votre aide PS 1.6.0.14 Link to comment Share on other sites More sharing options...
Pierre Webwalker Posted February 26, 2016 Share Posted February 26, 2016 Un petit up siouplait ! J'aurais vraiment besoin d'afficher une colonne Produits disponibles dans la liste des produits du BO et je suis une bille en php Auriez vous une idée pourquoi je n’arrive pas à surcharger cette liste ? Pour vous rappeler ce à quoi j'arrive : soit une page blanche, soit l'affichage du code de la surcharge (post ci-dessus) Merci de votre assistance Link to comment Share on other sites More sharing options...
herve25 Posted February 28, 2016 Share Posted February 28, 2016 Bonjour, J'ai resté mon code, mais impossible de le faire fonctionner, malgré différents tests et modificationsJe ne sais pas si quelque chose à changé depuis, mais il faudra du coup chercher une autre piste. Link to comment Share on other sites More sharing options...
Alexandre Carette Posted February 28, 2016 Share Posted February 28, 2016 Bonjour, quand vous avez une page blanche c'est que vous avez des erreurs php, il faut donc afficher ces erreurs afin d'avoir des indices pour leurs résolutions... Link to comment Share on other sites More sharing options...
Pierre Webwalker Posted February 28, 2016 Share Posted February 28, 2016 (edited) Excellente idée Alex Ça me donne :Fatal error: Class 'AdminProductsControllerCore' not found in /home/medianum/www/ps16test/override/controllers/admin/AdminProductsController.php on line 3 avec ce fichier override/controllers/admin/AdminProductsController.php : <?php class AdminProductsController extends AdminProductsControllerCore { public function __construct() { parent::__construct(); $this->fields_list['a!available_for_order'] = array( 'title' => $this->l('Dispo'), 'active' => 'a!available_for_order', 'filter_key' => 'a!available_for_order', 'align' => 'text-center', 'type' => 'bool', 'class' => 'fixed-width-sm', 'orderby' => 'false' ); } } ?> J'ai un peu de mal à interpréter ce que cela signifie Merci pour votre aide Edited February 28, 2016 by pierrewebmaster (see edit history) Link to comment Share on other sites More sharing options...
GTraglia Posted March 10, 2016 Share Posted March 10, 2016 Bonjour à tout hasard cela ne viendrais pas du '?>' en fin de ton fichier ? Excellente idée Alex Ça me donne :Fatal error: Class 'AdminProductsControllerCore' not found in /home/medianum/www/ps16test/override/controllers/admin/AdminProductsController.php on line 3 avec ce fichier override/controllers/admin/AdminProductsController.php : <?php class AdminProductsController extends AdminProductsControllerCore { public function __construct() { parent::__construct(); $this->fields_list['a!available_for_order'] = array( 'title' => $this->l('Dispo'), 'active' => 'a!available_for_order', 'filter_key' => 'a!available_for_order', 'align' => 'text-center', 'type' => 'bool', 'class' => 'fixed-width-sm', 'orderby' => 'false' ); } } ?> J'ai un peu de mal à interpréter ce que cela signifie Merci pour votre aide Link to comment Share on other sites More sharing options...
Pierre Webwalker Posted March 10, 2016 Share Posted March 10, 2016 Bonjour à tous, merci GTraglia, Ben oui peut-être mais le ?> n'est-il pas la fermeture du <?php Link to comment Share on other sites More sharing options...
GTraglia Posted March 11, 2016 Share Posted March 11, 2016 Oui effectivement, mais il n'est pas nécessairement géré dans le même fichier. On peut notamment remarqué son absence des fichiers similaires à "AdminProductsController.php" comme (au hasard) "AdminCmsController.php". On retrouve le "<?php" mais pas le "?>". Cela n'est qu'une supposition qui peut ne pas changer grand chose. En pretant attention aux détail de votre code, j'ai pensé qu'il pourrait être bien de tester le remplacement de la ligne: "parent::__construct();" par : "AdminController::__construct();" Cela reste plus proche de ce qui pourrait causer le message d'erreur "Fatal error: Class 'AdminProductsControllerCore' not found in /home/medianum/www/ps16test/override/controllers/admin/AdminProductsController.php on line 3" Link to comment Share on other sites More sharing options...
Pierre Webwalker Posted March 15, 2016 Share Posted March 15, 2016 Bonjour GTraglia, bonjour à tous, J'ai essayé donc sans le ?> et avec la modif "AdminController::__construct();" Résultat quand j'appelle la liste des produits, il s'affiche ce qui me semble être le controler complet... ...et dans lequel je retrouve ce bout de code : [fields_list:protected] => Array ( [a!available_for_order] => Array ( [title] => Dispo [active] => a!available_for_order [filter_key] => a!available_for_order [align] => text-center [type] => bool [class] => fixed-width-sm [orderby] => false ) ) Cela veut-il dire que l'override s'intègre bien ? Peut-être une piste ? 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