marider Posted October 8, 2010 Share Posted October 8, 2010 Bonjour à tous Est-il possible de créer un bouton de désactivation et d’activation des produits en masse car c’est vrai, on a qu’un seul bouton : qui est "supprimer la sélection" assez radical. Il serait bien pratique de pourvoir cocher plusieurs produits et cliquer sur un bouton activé ou désactivée la sélection des produits. Cela oblige t'il un nouveau module ou cette fonction qui serait bien pratique peut être envisageable en retouchant le fichier AdminProducts.phpQuelqu'un aurait il la solution ? Link to comment Share on other sites More sharing options...
klytorh Posted October 8, 2010 Share Posted October 8, 2010 C'est faisable il y a bulkProduct qui fait sa mais c'est un module payant et puis pour moi a la base ne fonctionnait pas j'ai du changer une ligne je croit mais le but etait de pouvoir changer le prix , les reductions , et les date de reductions en masse donc il suffit d'isoler le Active dans la base donnée et creer un champ ou checkbox ou radio enfin comme tu veux pour pouvoir changer sa valeur entre 0 et 1.Tout sa coupler avec une liste de produit bien ranger sa déchire ^^ Link to comment Share on other sites More sharing options...
BVince Posted October 8, 2010 Share Posted October 8, 2010 Bonjour,je viens de mettre en place cette option sur un site de test, je préfère vous le dire tout de suite, c'est pas si simple...Mais bon, je vais essayer de vous détailler tout ça :On commence par le fichier "AdminTab.php" du dossier "classes", recherchez cette ligne /* Delete multiple objects */ qui devrait se trouver vers la ligne numéro 475, et juste avant, intégrez ceci : elseif (Tools::isSubmit('submitDis'.$this->table)) //ADD BY BVINCE { if ($this->tabAccess['delete'] === '1') { if (isset($_POST[$this->table.'Box'])) { $object = new $this->className(); if (isset($object->noZeroObject) AND / Check if all object will be deleted (sizeof(call_user_func(array($this->className, $object->noZeroObject))) <= 1 OR sizeof($_POST[$this->table.'Box']) == sizeof(call_user_func(array($this->className, $object->noZeroObject))))) $this->_errors[] = Tools::displayError('you need at least one object').' '.$this->table.''.Tools::displayError(', you cannot delete all of them'); else { if ($object->disableSelection($_POST[$this->table.'Box'])) Tools::redirectAdmin($currentIndex.'&conf=2&token;='.$token); $this->_errors[] = Tools::displayError('an error occurred while disable selection'); } } else $this->_errors[] = Tools::displayError('you must select at least one element to delete'); } else $this->_errors[] = Tools::displayError('You do not have permission to disable here.'); } ensuite, recherchez toujours dans le même fichier, la fonction "displayListFooter", et remplacez la par celle-ci : public function displayListFooter($token = NULL) { echo ''; //MODIFY BY BVINCE if ($this->delete) echo ' '.($this->table=='product' ? '<input type="submit" class="button" name="submitDis'.$this->table.'" value="'.$this->l('Disable selection').'" onclick="return confirm(\''.$this->l('Disable selected items?', __CLASS__, TRUE, FALSE).'\');" /> ' : false).'<input type="submit" class="button" name="submitDel'.$this->table.'" value="'.$this->l('Delete selection').'" onclick="return confirm(\''.$this->l('Delete selected items?', __CLASS__, TRUE, FALSE).'\');" />'; echo ' <input type="hidden" name="token" value="'.($token ? $token : $this->token).'" /> </form>'; if (isset($this->_includeTab) AND sizeof($this->_includeTab)) echo ' '; } Ensuite, nous allons ouvrir le fichier "ObjectModel.php" du dossier "classes", nous allons lui ajouter 2 fonctions : public function disableSelection($selection) { if (!is_array($selection) OR !Validate::isTableOrIdentifier($this->identifier) OR !Validate::isTableOrIdentifier($this->table)) die(Tools::displayError()); $result = true; foreach ($selection AS $id) { $this->id = intval($id); $result = $result AND $this->disable(); } return $result; } et public function disable() { if (!Validate::isTableOrIdentifier($this->identifier) OR !Validate::isTableOrIdentifier($this->table)) die(Tools::displayError()); /* Database disable */ $result = Db::getInstance()->Execute('UPDATE `'.pSQL(_DB_PREFIX_.$this->table).'` SET active=0 WHERE `'.pSQL($this->identifier).'` = '.intval($this->id)); if (!$result) return false; return $result; } Normalement, vous allez voir apparaître le bouton correspondant en pied de liste produits... Link to comment Share on other sites More sharing options...
marider Posted October 8, 2010 Author Share Posted October 8, 2010 Bonjour VincentFranchement tu es une bête et toujours aussi soucieux de nos problèmes. J'attaque de suite je te tiens au courant dès que j'ai fini le test.Merci encore Link to comment Share on other sites More sharing options...
BVince Posted October 8, 2010 Share Posted October 8, 2010 Merci, je ne suis pas une bête, j'ai appris à lire un code et à le comprendre, c'est tout...mais merci...PS : cette modification ne concerne que l'intégration d'un bouton "DISABLE", si besoin je pourrais ajouter le tutoriel du bouton "ENABLE" Link to comment Share on other sites More sharing options...
marider Posted October 8, 2010 Author Share Posted October 8, 2010 Vincent SVP besoin d'aide les 2 fonctions tu les rajoutes à quel endroit dans le code Link to comment Share on other sites More sharing options...
BVince Posted October 8, 2010 Share Posted October 8, 2010 Tu peux ajouter disableSelection() après la fonction deleteSelection()etdisable() après la fonction delete()comme ça c'est plus propre... Link to comment Share on other sites More sharing options...
marider Posted October 8, 2010 Author Share Posted October 8, 2010 Arff la misère cela fonctionne pas j'ai plus ma page dans le BO quand j'insère les codes pourtant je les met au bonne endroit Link to comment Share on other sites More sharing options...
BVince Posted October 8, 2010 Share Posted October 8, 2010 Si la page n'apparaît plus il faut tout reprendre au début car tu as du intercaler certaines informations où il ne fallait pas....Envoies moi des accès FTP, je te fais ça en 2 minutes... Link to comment Share on other sites More sharing options...
klytorh Posted October 8, 2010 Share Posted October 8, 2010 Hey je testerai ton petit joujou dès que j'en aurai parler a mon boss histoire que je lui mette pas ce qu'il veux pas ^^ Sinon tu as l'air calé sur presta tu veux pas me filer un coup de main pour mon probleme de generateur de declinaisons : C'est par la ^^ Merci Link to comment Share on other sites More sharing options...
marider Posted October 8, 2010 Author Share Posted October 8, 2010 Je le fait en local si tu veux je te donne les fichiers Link to comment Share on other sites More sharing options...
BVince Posted October 8, 2010 Share Posted October 8, 2010 Pas de soucis, ou encore, je t'envoie les miens... (PS 1.3.1)Cette version intègre le bouton "ENABLE" et "DISABLE", il sera néanmoins nécessaire de passer par l'outil de traduction du back office pour traduire quelques phrases... AdminTab.php ObjectModel.php Link to comment Share on other sites More sharing options...
marider Posted October 8, 2010 Author Share Posted October 8, 2010 Bas écoute c'est nickel trop fort et merci Vincent cela fonctionne et en plus c'est bien pratique tu trouve pas ?plus la peine de ce les cliquez 1 par 1 ? Link to comment Share on other sites More sharing options...
marider Posted October 8, 2010 Author Share Posted October 8, 2010 Et je rajoute quelque chose je suis utilisateur des modules de BVince franchement je les recommandes à tous car c'est des modules de très grandes qualités et le sérieux est au rendez-vous.Merci Vincent tu es au top Link to comment Share on other sites More sharing options...
BVince Posted October 8, 2010 Share Posted October 8, 2010 Super si ça a pu t'aider, @ bientôt et merci aussi à toi....EDIT : tu passes le POST en résolu Link to comment Share on other sites More sharing options...
marider Posted October 8, 2010 Author Share Posted October 8, 2010 Ok c'est moi qui te remercie beaucoup car c'est suite à une demande poster d'une personne donc voici nos conversations sur le problèmehttp://www.prestashop.com/forums/viewthread/72792/configuration_et_utilisation_de_prestashop/desactivation_produitsJ'ai trouvé que cette demande était très utile et pratique, car quand tu à beaucoup de produit cette fonctionnalitée est quand même la bienvenue je pense que cette petite option va plaire à plus d'un utilisateur Prestashop.Merci encore à toi Link to comment Share on other sites More sharing options...
BVince Posted October 8, 2010 Share Posted October 8, 2010 J'ai aussi répondu ici il y a quelques temps, pour désactiver les produits contenus dans une catégorie que l'on désactive :http://www.prestashop.com/forums/viewthread/55383/P15/developpement/resolu_masquer_categorie__masquer_tous_ses_produits Link to comment Share on other sites More sharing options...
marider Posted October 8, 2010 Author Share Posted October 8, 2010 Merci encore Vincent Link to comment Share on other sites More sharing options...
chrisxm Posted October 8, 2010 Share Posted October 8, 2010 Merci Bvince, ton module m'enlève une épine du pied, je vais mettre ça en place dés que possible.P.S: Je vais regarder aussi la solution que tu proposes plus haut ! Link to comment Share on other sites More sharing options...
chrisxm Posted October 14, 2010 Share Posted October 14, 2010 oups ! mauvais thread, je corrige ! Link to comment Share on other sites More sharing options...
guest* Posted December 16, 2010 Share Posted December 16, 2010 elseif (Tools::isSubmit('submitDis'.$this->table)) //ADD BY BVINCE { if ($this->tabAccess['delete'] === '1') { if (isset($_POST[$this->table.'Box'])) { $object = new $this->className(); if (isset($object->noZeroObject) AND / Check if all object will be deleted (sizeof(call_user_func(array($this->className, $object->noZeroObject))) <= 1 OR sizeof($_POST[$this->table.'Box']) == sizeof(call_user_func(array($this->className, $object->noZeroObject))))) $this->_errors[] = Tools::displayError('you need at least one object').' '.$this->table.''.Tools::displayError(', you cannot delete all of them'); else { if ($object->disableSelection($_POST[$this->table.'Box'])) Tools::redirectAdmin($currentIndex.'&conf=2&token;='.$token); $this->_errors[] = Tools::displayError('an error occurred while disable selection'); } } else $this->_errors[] = Tools::displayError('you must select at least one element to delete'); } else $this->_errors[] = Tools::displayError('You do not have permission to disable here.'); } This code does not work for me. I receive a 500 error . Link to comment Share on other sites More sharing options...
hulk Posted October 4, 2011 Share Posted October 4, 2011 Bonjour a tous Merci Bvince pour les trucs génial que tu fait, ça aide beaucoup de personne. on ce qui me concerne je veut savoir si c'est possible de désactivé des produits dont le stocks = 0 sans intervention humaine. bien sur la désactivation sera selon des critères définis comme par exemple désactiver les 8 plus anciens produits (en terme de date d'ajout bien sur). je suis entrain de développer un module (en cours) pour ça mais avec clique sur le bouton pour désactiver ou activer les produits. je me demande comment le rendre cette tâche automatisée, s'il en faut modifier quelques fichier dans le core pas de soucis. je travaille avec la version 1.2.5 Link to comment Share on other sites More sharing options...
pat62500 Posted October 6, 2011 Share Posted October 6, 2011 Pas de soucis, ou encore, je t'envoie les miens... (PS 1.3.1) Cette version intègre le bouton "ENABLE" et "DISABLE", il sera néanmoins nécessaire de passer par l'outil de traduction du back office pour traduire quelques phrases... Bonjour et un grand merci a toi pour cette fonction "indispensable" qui fonctionne trés bien, mais.... j'ai un petit souci d'affichage dans le catalogue du back office, (voir capture écran) merci d'avance. Link to comment Share on other sites More sharing options...
Webar Posted February 6, 2018 Share Posted February 6, 2018 Je déterre ce sujet car j'ai vraiment d'arriver a cette solution proposer par Bvince sauf que je suis en 1.6.1 et qu'après plusieurs essais je me retrouve toujours avec une erreur 500 . quelqu'un pourrait il me venir en aide merci 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