flohen Posted March 31, 2013 Share Posted March 31, 2013 Bonjour a tous je cherche a afficher en mode multiboutique en FO uniquement les produits en stock dans une boutique est ce que quelqu' un aurait une piste merci flo Link to comment Share on other sites More sharing options...
jhb13 Posted March 31, 2013 Share Posted March 31, 2013 Bonjour, On peut choisir par case à cocher dans "Préférences/Produits" si le produit peut être ou non commander hors stock, ensuite si on ne veut pas que les produits hors stock s'affiche, il faut les désactiver produit par produit dans la fiche produit. On peut mettre une alerte sur le stock produit dans la fiche produit à la création. A+ Link to comment Share on other sites More sharing options...
flohen Posted March 31, 2013 Author Share Posted March 31, 2013 ok j y ai deja pensé mais ce n est pas automatique et si je dois desactiver un produit des qu il est vendu cela va etre compliqué je cherche juste a modifier un script ou autre merci qu en meme Link to comment Share on other sites More sharing options...
jhb13 Posted April 1, 2013 Share Posted April 1, 2013 Re, Essayes de voir dans le fichier product.tpl. A+ Link to comment Share on other sites More sharing options...
myriamrv Posted April 8, 2013 Share Posted April 8, 2013 Bonjour, Je me joins à ce topic car je serais également intéressée pour que les produits hors stock soient automatiquement masqués. En effet j'ai souvent de nombreux produits hors stock et je pense que cela nuit aux ventes (les clients attendent les réappros, reportent leur commande, lorsqu'un produit est revenu d'autres manquent etc...) Même s'il faut passer par un module payant, je serais intéressée (selon le prix...), sinon, que faut-il voir plus précisément dans le fichier product.tpl ? Merci par avance ! Link to comment Share on other sites More sharing options...
flohen Posted April 8, 2013 Author Share Posted April 8, 2013 j ai trouvé ceci Prestashop : ne pas faire apparaître les produits hors stock Fonction non prévue dans les versions de Prestashop Pour ne pas faire apparaître les produits hors stock dans Prestashop 1.4.5, modifier le fichier /classes/Category.php : Remplacer lignes 544 et 565 WHERE cp.`id_category` = '.(int)($this->id).($active ? ' AND p.`active` = 1' : '').' par WHERE p.quantity > 0 AND cp.`id_category` = '.(int)($this->id).($active ? ' AND p.`active` = 1' : '').' La modification de la ligne 544 permet de calculer correctement le nombre de pages de produits. Reste a trouver une solution pour le multiboutique Link to comment Share on other sites More sharing options...
flohen Posted April 14, 2013 Author Share Posted April 14, 2013 bonjour a tous je relance car je rame pour le mettre en multiboutique merci Link to comment Share on other sites More sharing options...
Bondaty and Co Posted April 18, 2013 Share Posted April 18, 2013 (edited) Bonjour, Une petite astuce simple à mettre en place pour masquer le produit dans la liste produits. Attention celà ne désactive pas le produit, il ne s'affiche pas en page catégorie uniquement. dans votre productlist.tpl après: <ul id="product_list" class="clear"> {foreach from=$products item=product name=products} ajoutez {if $product.quantity > 0} en fin de page avant {/foreach} ajoutez {/if} A vérifier si ça gère les déclinaisons. C'est vérifier, ça prend en compte les déclinaisons Edited April 18, 2013 by Muche (see edit history) 1 Link to comment Share on other sites More sharing options...
flohen Posted April 18, 2013 Author Share Posted April 18, 2013 ok merci je vais essayer mais comment je peux faire pour que cela fonctionne uniquement sur une seule boutique et que les autres boutiques puissent afficher tous les produits Link to comment Share on other sites More sharing options...
guil182 Posted May 5, 2013 Share Posted May 5, 2013 Bonjour, Merci Muche pour votre aide. Je me permets d'écrire un post car je suis également intéressé par cette fonctionnalité. Malheureusement c'est plus complexe que ça, dans le sens il y a des "traces" du produit un peu partout, comme "nouveau produit" etc...pas uniquement sur la liste des produits. En fait, au final, il faudrait état=désactivé quand son stock est à Zéro, et là le FO devient plus "propre". Es ce possible ? Cordialement Link to comment Share on other sites More sharing options...
Bondaty and Co Posted May 5, 2013 Share Posted May 5, 2013 Effectivement c'est plus complexe. Vous pouvez également adapter ces modifs dans new-products.tpl + le module new-product. Sinon vous pouvez gratter dans les controllers, mais attention aux déclinaisons. Link to comment Share on other sites More sharing options...
flohen Posted May 11, 2013 Author Share Posted May 11, 2013 on pourrai pas imaginer une modification qui va chercher l ID de la boutique et qui dit si c est l ID 1 afficher que les produits en stock dans la gestion avancée et pour le reste tou afficher avec les parametres Link to comment Share on other sites More sharing options...
flohen Posted May 19, 2013 Author Share Posted May 19, 2013 un petit up Je planche , je rame Mais je suis sur que cela peut intéresser beaucoup de monde notamment en utilisation perso avec une boutique réel a+ Link to comment Share on other sites More sharing options...
jcandres Posted June 7, 2013 Share Posted June 7, 2013 un debut de solution si vous utilisez la navigation a facette : dans le fichier blocklayered.php SELECT p.*,sa.*, '.($alias_where == 'p' ? '' : 'product_shop.*,' ).' '.$alias_where.'.id_category_default, pl.*, i.id_image, il.legend, m.name manufacturer_name, DATEDIFF('.$alias_where.'.`date_add`, DATE_SUB(NOW(), INTERVAL '.(Validate::isUnsignedInt(Configuration::get('PS_NB_DAYS_NEW_PRODUCT')) ? Configuration::get('PS_NB_DAYS_NEW_PRODUCT') : 20).' DAY)) > 0 AS new FROM `'._DB_PREFIX_.'category_product` cp LEFT JOIN '._DB_PREFIX_.'category c ON (c.id_category = cp.id_category) LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = cp.`id_product` '.$join.' LEFT JOIN '._DB_PREFIX_.'product_lang pl ON (pl.id_product = p.id_product'.Shop::addSqlRestrictionOnLang('pl').') LEFT JOIN '._DB_PREFIX_.'image i ON (i.id_product = p.id_product AND i.cover = 1) LEFT JOIN '._DB_PREFIX_.'image_lang il ON (i.id_image = il.id_image AND il.id_lang = '.(int)($cookie->id_lang).') LEFT JOIN '._DB_PREFIX_.'manufacturer m ON (m.id_manufacturer = p.id_manufacturer) LEFT JOIN `'._DB_PREFIX_.'stock_available` sa ON (p.`id_product` = sa.`id_product` AND sa.id_shop = '.(int) Context::getContext()->shop->id.') WHERE '.$alias_where.'.`active` = 1 AND '.(Configuration::get('PS_LAYERED_FULL_TREE') ? 'c.nleft >= '.(int)$parent->nleft.' AND c.nright <= '.(int)$parent->nright : 'c.id_category = '.(int)$id_parent).' AND sa.`quantity` > 0 AND c.active = 1 AND pl.id_lang = '.(int)$cookie->id_lang.' AND p.id_product IN ('.implode(',', $product_id_list).')' .' GROUP BY p.id_product ORDER BY '.Tools::getProductsOrder('by', Tools::getValue('orderby'), true).' '.Tools::getProductsOrder('way', Tools::getValue('orderway')). ' LIMIT '.(((int)$this->page - 1) * $n.','.$n)); Seul soucis le nombre de page qui devient faux mais je pense pas etre loin de la solution. Pour ceux qui n'utilisent pas la navigation a facette meme modif dans product.php dans la fonction getproduct il faut rajouter sa.* LEFT JOIN `'._DB_PREFIX_.'stock_available` sa ON (p.`id_product` = sa.`id_product` AND sa.id_shop = '.(int) Context::getContext()->shop->id.') AND sa.`quantity` > 0 AND c.active = 1 ++ Andres Jean christophe 1 Link to comment Share on other sites More sharing options...
Spycasso Posted August 2, 2013 Share Posted August 2, 2013 Bonjour MUCHE, J'ai essayé votre méthode, mais hélas, ça ne marche pas. Je suis en version 1.4.6.2 Est-ce dû à la version ? Vous avez testé et ça marchait sur votre site ? Merci pour votre aide Link to comment Share on other sites More sharing options...
Bondaty and Co Posted August 2, 2013 Share Posted August 2, 2013 Bonjour MUCHE, J'ai essayé votre méthode, mais hélas, ça ne marche pas. Je suis en version 1.4.6.2 Est-ce dû à la version ? Vous avez testé et ça marchait sur votre site ? Merci pour votre aide testé et approuvé mais sur 1.5 Link to comment Share on other sites More sharing options...
Spycasso Posted August 2, 2013 Share Posted August 2, 2013 Ha ! C'est sur que ça ne marche pas pareil. Bon, je continue mes recherches, je vous tiendrai informé. J'ai essayé la méthode de FLOHEN, mais elle ne marche pas non plus. A+ Link to comment Share on other sites More sharing options...
diabolyo Posted August 7, 2013 Share Posted August 7, 2013 Up ! Super intéressant ce topic Link to comment Share on other sites More sharing options...
Nicolain06 Posted August 9, 2013 Share Posted August 9, 2013 Bonjour, est ce que quelqu'un a réussi à changer ou localiser la partie ou la pagination se calcule ? car en modifiant la requête (comme Jcandres) on limite effectivement l'affichage aux bons produits mais la pagination reste calculée sur le total et non sur les produits en stock. Link to comment Share on other sites More sharing options...
Nicolain06 Posted August 9, 2013 Share Posted August 9, 2013 Pour ceux que ça aide, j'ai finalement réussi en modifiant la requête dans la fonction getNbSales(), afin de compter uniquement le bon nombre de produits hors stocks à 0. $sql = 'SELECT COUNT(DISTINCT(ps.`id_product`)) AS nb FROM `'._DB_PREFIX_.'product_sale` ps LEFT JOIN `'._DB_PREFIX_.'product` p ON p.`id_product` = ps.`id_product` '.Shop::addSqlAssociation('product', 'p', false).' LEFT JOIN `'._DB_PREFIX_.'stock_available` sa ON ( sa.id_product = ps.id_product ) WHERE product_shop.`active` = 1 AND sa.quantity > 0'; Link to comment Share on other sites More sharing options...
flohen Posted August 10, 2013 Author Share Posted August 10, 2013 cool je vais essayer des que possible Link to comment Share on other sites More sharing options...
flohen Posted August 10, 2013 Author Share Posted August 10, 2013 cool je vais essayer des que possible c est quel fichier que tu modifie Nico Link to comment Share on other sites More sharing options...
jeckyl Posted August 10, 2013 Share Posted August 10, 2013 Bonjour, rappelons tout fois que désactiver un produit après son achat le rend inaccessible à Google donc erreur 404 pour Google, ce qui n'est pas très bien pour le référencement. Attention je n'ai pas de solution mais juste un petit message d'avertissement. à mon avis il serait préférable de développer un module qui désactive le produit après une commande et le réactive après un réapro. Link to comment Share on other sites More sharing options...
flohen Posted August 10, 2013 Author Share Posted August 10, 2013 bonne remarque si j ai bien compris qua,d le stock est a zero le produit et desactivé mais pour google c est idem? Ou alors il faut un tache crown journaliere pour la mise a jour chez google Link to comment Share on other sites More sharing options...
jeckyl Posted August 10, 2013 Share Posted August 10, 2013 Après on peut faire d'autres choses comme créer une nouvelle information comme quoi un produit est désactivé et proposer une redirection vers la catégorie par défaut du produit. c'est un autre soucis. Link to comment Share on other sites More sharing options...
Nicolain06 Posted August 11, 2013 Share Posted August 11, 2013 De mon côté le but était de pouvoir ne plus lister les produits hors stock sur les différentes vues (listing des catégories, meilleures ventes etc), de manière à ne pas perdre l'attention des utilisateurs tout en conservant les liens de produits épuisés fonctionnels. Flohen, pour le coup c'était dans la classe ProductSale.php, fonction getNbSales(), j'ai aussi modifié getBestSales() pour afficher un listing correct sur les meilleures ventes. Link to comment Share on other sites More sharing options...
jeckyl Posted August 11, 2013 Share Posted August 11, 2013 L'idée de retirer ces produits seulement sur les modules annexe et listing de ventes, promo et autre est une bonne idée, et ce qu'il serait bien c'est d'avoir la possibilité de mettre à la fin des listing tous les produits hors stock, vente-privee fait cela est c'estb pas mal, produit vendu en bas de la liste. Link to comment Share on other sites More sharing options...
bili Posted September 1, 2013 Share Posted September 1, 2013 Bonjour, Une petite astuce simple à mettre en place pour masquer le produit dans la liste produits. Attention celà ne désactive pas le produit, il ne s'affiche pas en page catégorie uniquement. dans votre productlist.tpl après: <ul id="product_list" class="clear"> {foreach from=$products item=product name=products}ajoutez {if $product.quantity > 0}en fin de page avant {/foreach}ajoutez {/if} A vérifier si ça gère les déclinaisons. C'est vérifier, ça prend en compte les déclinaisons Edited by Muche, 18 April 2013 - 10:07 AM. JF Référenceur likes this Like This Un [RESOLU] 100% de chances de futures réponses Bonjour, Il me semble que pour que ça gère le stock des déclinaisons, il faut mettre : {if ($product.allow_oosp || $product.quantity > 0 || $product.quantity_all_versions > 0)} Cordialement Philippe Link to comment Share on other sites More sharing options...
Spycasso Posted September 2, 2013 Share Posted September 2, 2013 Super ça marche nickel pour la version 1.4.6, par contre, ça ne compte pas les produits, du coup on a un problème avec la pagination. Une idée mon cher BILI ? Link to comment Share on other sites More sharing options...
gueyome Posted November 19, 2013 Share Posted November 19, 2013 testé et approuvé mais sur 1.5 Malheureusement ne marche en 1.5.6 pour moi non plus si une des déclinaisons à un stock plus grand que 0. Link to comment Share on other sites More sharing options...
flohen Posted January 10, 2014 Author Share Posted January 10, 2014 Bonjour a tous ci joint une piste que je vais tester How to automatically disable out of stock products in PrestaShop Introduction Today I want to show you how to automatically disable out of stock products in your store. Unfortunately, by default you can't hide products which are out of stock. You can only disallow to order them. So the product will appear on list. In this tutorial you will read how to disable it. As you know, PrestaShop is based on MySQL database, which mean that most important informations (products + categories + etc.) are stored in tables. To achieve what we want - we will use MySQL triggers. What is MySQL trigger? Trigger is a rule that you put on a table which basically says, whenever you DELETE, UPDATE or INSERT something in this table, also do something else. Facts about PrestaShop: Product informations are stored in tables with ps_product prefix, Stock informations are stored in table ps_stock_available (prestashop 1.5.x) To disable product in the shop you have to change the active field in ps_product_shop table to 0 To enable product in the shop you have to change the active field in ps_product_shop table to 1 Concept We want to create MySQL trigger which will change product visibility in store to off (active=0), when the product quantity equals 0. When product stock value will be bigger than 0 - then product visibility will be turned to on (active=1). As I said the trigger is a rule that we can put on table whenever we (or PHP script - like PrestaShop) DELETE, UPDATE OR INSERT something in this table. When you change product quantity in back office or when someone buy something from you - PHP script automatically UPDATE ps_stock_available table and change the quantity for product that you sold. How to create trigger? You can create trigger in many ways. You can use SQL query, you can use some database managers like PHPMyAdmin. I will show you both. Okay, let's do the trick Each MySQL trigger requires: A unique name. The best thing is to use a name which describes the table and action that you want to achieve. Anyway, the name depends on you. You can define name exactly as you want - but remember that it must be unique. The table for which trigger will work, single trigger can only monitor a single table. When the trigger occurs - you can easily setup when the trigger will occur. You can create trigger BEFORE or AFTER DELTE, UPDATE or INSERT something to table The Trigger body - a set of SQL queries tu run. Our trigger SQL query: 1 2 3 4 5 6 CREATE TRIGGER change_active_after_update AFTER UPDATE ON ps_stock_available FOR EACH ROW BEGIN UPDATE ps_product_shop SET active=0 WHERE id_product IN (SELECT id_product FROM ps_stock_available WHERE quantity=0); UPDATE ps_product_shop SET active=1 WHERE id_product IN (SELECT id_product FROM ps_stock_available WHERE quantity>0); END All you have to do with this query - is to run it in prestashop, or somewhere else - for example in database managers like PHPMyAdmin. Let me say something more about query above. 1 2 CREATE TRIGGER change_active_after_update AFTER UPDATE ON ps_stock_available FOR EACH ROW This mean that we creating trigger named change_active_after_update AFTER any UPDATE ON the ps_stock_available table. FOR EACH ROW means that triger will monitor all available entries. 1 BEGIN This means that we start our trigger body here. All SQL queries between the BEGIN & END will run one by one. 1 UPDATE ps_product_shop SET active=0 WHERE id_product IN (SELECT id_product FROM ps_stock_available WHERE quantity=0); This means that we will SELECT all products from your store, which have quantity value 0. And then query will change the active param to 0 - wich mean that each product with quantity = 0 will be disabled. 1 UPDATE ps_product_shop SET active=1 WHERE id_product IN (SELECT id_product FROM ps_stock_available WHERE quantity>0); This query is similar to previous, but it will enable all products from your store which are in stock (with quantity value > 0) 1 END END means that here is an end of the trigger body. Creating trigger in PHPMyAdmin I will use here PHPMyAdmin in version 3.5.2.2 (check documentation of PHPMyAdmin). But you can use newest version and older one too, the process of creating trigger is the same in all versions. For the first - log in to your PHPMyAdmin and select database with your prestashop store: Search for ps_stock_available table. We will create trigger on this table, so we have to open it. When you find it on the list - click on table name. you will see something like: Click on triggers button in top horizontal menu. You will see all defined trigers for this table (of course if you created). If not - the list will be empty: Click on "Add trigger" button. You will see form, where you have to specify trigger parameteres. Fill it exactly as I show below. To the Definition field - paste the trigger body. Here it is (copy BEGIND + BODY + END), all of the code below: 1 2 3 4 BEGIN UPDATE ps_product_shop SET active=0 WHERE id_product IN (SELECT id_product FROM ps_stock_available WHERE quantity=0); UPDATE ps_product_shop SET active=1 WHERE id_product IN (SELECT id_product FROM ps_stock_available WHERE quantity>0); END Here is the trigger parameters form: When you are convinced that you filled form exactly as I - click on "Go" button. You will se confirmation page: Your trigger is ready now! Article by Milosz Myszczuk PrestaShop expert, official PrestaShop community moderator. PHP developer, specialist in relative and spatial databases management, GIS Analyst, CEO & founder of VEKIA interactive agency. Read more about VEKIA company Link to comment Share on other sites More sharing options...
durrm001 Posted February 13, 2014 Share Posted February 13, 2014 Bonjour,Je suis en PrestaShop 1.5.4.0, et les solutions présentées ci-dessus ne fonctionnent pas :1) flohen : les produits s'affichent toujours2) Bondaty and Co : le nombre de produits ne se met pas à jour, le multipage non plus3) Nicolain06 : les produits s'affichent toujours4) flohen : pour les triggers, cela ne convient pas, car cela désactive le produit, et pour la trace de google, il ne faut pas le faire.Je recherche une solution qui cache les produits hors stock quand on affiche les produits en naviguant dans les catégories.Mais j'aimerais que cela prenne en compte également les produits au statut "Refuser les commandes" ou "Accepter les commandes".En clair, si on accepte les commandes hors stock, il faut que le produit soit là même s'il n'est pas en stock.Par contre, pour les produits où l'on n'accepte pas les commandes hors stock, il faut cacher le produit.J'aimerais utilise l'override si possible.Quelqu'un pourrait m'aider ?Merci beaucoup. Link to comment Share on other sites More sharing options...
businessphoneandcom Posted April 2, 2014 Share Posted April 2, 2014 (edited) Bonjour, Je suis en PrestaShop 1.5.4.0, et les solutions présentées ci-dessus ne fonctionnent pas : 1) flohen : les produits s'affichent toujours 2) Bondaty and Co : le nombre de produits ne se met pas à jour, le multipage non plus 3) Nicolain06 : les produits s'affichent toujours 4) flohen : pour les triggers, cela ne convient pas, car cela désactive le produit, et pour la trace de google, il ne faut pas le faire. Je recherche une solution qui cache les produits hors stock quand on affiche les produits en naviguant dans les catégories. Mais j'aimerais que cela prenne en compte également les produits au statut "Refuser les commandes" ou "Accepter les commandes". En clair, si on accepte les commandes hors stock, il faut que le produit soit là même s'il n'est pas en stock. Par contre, pour les produits où l'on n'accepte pas les commandes hors stock, il faut cacher le produit. J'aimerais utilise l'override si possible. Quelqu'un pourrait m'aider ? Merci beaucoup. Hello, Voici la solution: rends-toi dans le fichier product-list.tpl de ton thème. exemple (/www/thèmes/Ton_thème) Ensuite trouves la ligne {foreach from=$products item=product name=products} (astuce ctrl+F pour le moteur de recherche dans ton logiciel d'édition php, etc..) Juste en dessous cette ligne {foreach from=$products item=product name=products} qui se trouve à peut près à la ligne 30 tu mets par exemple à la ligne 31 ce code {if $product.quantity > 0} Après vers la ligne 73 et juste au dessus de {/foreach} tu mets {/if} Et pour finir bien sur tu sauvegardes ton fichier et tu retournes dans le B-O de prestashop sur paramètres>Performances et tu cliques sur "Effacer le cache de Smarty et le cache de l'Autoload" puis admires le résultat dans ta boutique (plus aucun produit hors stock !! beautifull n'est ce pas ?) Et basta .... c'est : [RESOLU] BusinessPhoneAndCom de www.phoneandcom.com Edited April 2, 2014 by businessphoneandcom (see edit history) Link to comment Share on other sites More sharing options...
businessphoneandcom Posted April 8, 2014 Share Posted April 8, 2014 (edited) Bonjour a tous je cherche a afficher en mode multiboutique en FO uniquement les produits en stock dans une boutique est ce que quelqu' un aurait une piste merci flo Hello, Voici la solution: rends-toi dans le fichier product-list.tpl de ton thème. exemple (/www/thèmes/Ton_thème) Ensuite trouves la ligne {foreach from=$products item=product name=products} (astuce ctrl+F pour le moteur de recherche dans ton logiciel d'édition php, etc..) Juste en dessous cette ligne {foreach from=$products item=product name=products} qui se trouve à peut près à la ligne 30 tu mets par exemple à la ligne 31 ce code {if $product.quantity > 0} Après vers la ligne 73 et juste au dessus de {/foreach} tu mets {/if} Et pour finir bien sur tu sauvegardes ton fichier et tu retournes dans le B-O de prestashop sur paramètres>Performances et tu cliques sur "Effacer le cache de Smarty et le cache de l'Autoload" puis admires le résultat dans ta boutique (plus aucun produit hors stock !! beautifull n'est ce pas ?) Et basta .... c'est : [RESOLU] BusinessPhoneAndCom de www.phoneandcom.com Ps: j'ai mis les numéros de ligne à titre indicatif pour PS 1.5.6.2 car sous PS 1.6 c'est de la ligne 42 à 190 par exemple. Edited April 8, 2014 by businessphoneandcom (see edit history) Link to comment Share on other sites More sharing options...
flohen Posted April 8, 2014 Author Share Posted April 8, 2014 DSL Deja evoquer plus haut merci quand meme a+ flo Link to comment Share on other sites More sharing options...
businessphoneandcom Posted April 17, 2014 Share Posted April 17, 2014 (edited) DSL Deja evoquer plus haut merci quand meme a+ flo Bonjour, le mieux et et plus propre à apporter à ma réponse c'est de créer un fichier PHP et y insérer ces lignes de code: <?php $link = mysql_connect('db_name_server', 'db_user', 'password'); if (!$link) { die('No connection possible: ' . mysql_error()); } mysql_select_db('db_name'); mysql_query('UPDATE ps_1product_shop SET active=0 WHERE id_product IN (SELECT id_product FROM ps_1stock_available WHERE quantity=0)'); mysql_query('UPDATE ps_1product_shop SET active=1 WHERE id_product IN (SELECT id_product FROM ps_1stock_available WHERE quantity>0)'); ?> en modifiant bien évidemment vos noms utilisateur, mots de passe et nom de base (tout ce qui est en rouge) et si votre base de donnée correspond bien car pour moi c'est ps_1 mais ça peut etre autre choser pour vous et donc à modifier si besoin (voir en bleu). Sinon respectez bien tout les guillemets, les espaces etc... de ce fichier (en faisant un copier / Coller c'est préférable) puis mettez ce fichier .PHP dans votre serveur ftp ou vous voulez et ensuite créez une tâche Webcron chez votre hébergeur. Moi par exemple chez mon hébergeur ça ressemble à ça Vous pouvez le tester directement en url aussi comme par exemple : www.nom_du_site.com/fichier_créé.php (suivant ou vous avez mis le fichier: ici ça correspond à un fichier mis directement dans la racine www du serveur ftp). Si l'on avait mis le fichier dans un dossier du serveur ftp s'appelant par exemple "mon_dossier" ça aurait donné: www.mon_site.com/mon_dossier/fichier_créé.php Edited April 17, 2014 by businessphoneandcom (see edit history) 1 Link to comment Share on other sites More sharing options...
flohen Posted April 18, 2014 Author Share Posted April 18, 2014 ok je vais tester Link to comment Share on other sites More sharing options...
businessphoneandcom Posted April 18, 2014 Share Posted April 18, 2014 ok je vais tester Hello, Pas de souci tiens moi au jus car pour moi c'est nickel. Tu n'as plus qu'a remettre le fichier product-list.tpl d'origine par la suite si tu le souhaite (moi je l'ai fait mais pas obligatoire). J'avoue que la tache Webcron c'est super car ça te place tous les produits en stock bien comme il faut dans ton front-office. Avant y avait des trous sur certaines de mes pages (normal c'était juste caché les produits manquants) Link to comment Share on other sites More sharing options...
diabolyo Posted May 1, 2014 Share Posted May 1, 2014 j ai trouvé ceci Prestashop : ne pas faire apparaître les produits hors stock Fonction non prévue dans les versions de Prestashop Pour ne pas faire apparaître les produits hors stock dans Prestashop 1.4.5, modifier le fichier /classes/Category.php : Remplacer lignes 544 et 565 WHERE cp.`id_category` = '.(int)($this->id).($active ? ' AND p.`active` = 1' : '').' par WHERE p.quantity > 0 AND cp.`id_category` = '.(int)($this->id).($active ? ' AND p.`active` = 1' : '').' La modification de la ligne 544 permet de calculer correctement le nombre de pages de produits. Reste a trouver une solution pour le multiboutique Bonjour, ça marche nickel pour moi (PS 1.4.6.2) sauf que les produits à zéro mais commandables ne s'affichent plus… une idée pour contourner le problème? merci ! Link to comment Share on other sites More sharing options...
businessphoneandcom Posted May 1, 2014 Share Posted May 1, 2014 Bonjour, ça marche nickel pour moi (PS 1.4.6.2) sauf que les produits à zéro mais commandables ne s'affichent plus… une idée pour contourner le problème? merci ! Hello, tu as testé avec ma méthode citée plus haut ? Bon jour férié. Ps:Aujourd'hui vu que c'est jour de fête :-) profitez de -5% sur tout le site www.phoneandcom.com Link to comment Share on other sites More sharing options...
zellige Posted June 21, 2014 Share Posted June 21, 2014 Hello, tu as testé avec ma méthode citée plus haut ? Bon jour férié. Ps:Aujourd'hui vu que c'est jour de fête :-) profitez de -5% sur tout le site www.phoneandcom.com Bonjour ! J'ai bien tout fait comme cité, ça fonctionne sauf pour les produits hors stock commandables : ils n'apparaissent pas : ( Une idée ? Merci beaucoup ! Link to comment Share on other sites More sharing options...
businessphoneandcom Posted June 21, 2014 Share Posted June 21, 2014 Bonjour ! J'ai bien tout fait comme cité, ça fonctionne sauf pour les produits hors stock commandables : ils n'apparaissent pas : ( Une idée ? Merci beaucoup ! Bonjour, Oui c'est normal car moi le but est de faire totalement disparaître les produits hors stocks. Maintenant pour laisser les produits en hors stock commandable il faut ne pas utiliser ma méthode mais plutot aller dans le back office puis dans les préférence > produit et activer l'option "Autoriser la commande de produits en rupture de stock " Link to comment Share on other sites More sharing options...
zellige Posted June 21, 2014 Share Posted June 21, 2014 Bonjour, Oui c'est normal car moi le but est de faire totalement disparaître les produits hors stocks. Maintenant pour laisser les produits en hors stock commandable il faut ne pas utiliser ma méthode mais plutot aller dans le back office puis dans les préférence > produit et activer l'option "Autoriser la commande de produits en rupture de stock " Oui mais dans ce cas, mes produits hors stock et non commandables seront toujours activés. y'aurait il pas une façon de modifier la product list en précisant dans la condition produit en stock et produit hors stock mais commandables ? un peu dans le genre : {if ($product.allow_oosp || $product.quantity > 0)} Merci pour les pistes : ) Link to comment Share on other sites More sharing options...
businessphoneandcom Posted June 21, 2014 Share Posted June 21, 2014 (edited) Oui mais dans ce cas, mes produits hors stock et non commandables seront toujours activés. y'aurait il pas une façon de modifier la product list en précisant dans la condition produit en stock et produit hors stock mais commandables ? un peu dans le genre : {if ($product.allow_oosp || $product.quantity > 0)} Merci pour les pistes : ) Re-bonjour, Sur ce point je ne suis pas programmateur à mes grands regrets car sinon j'aurai fais pleins de modules pour toutes ces histoires de stocks et autres choses. J'ai trouvé mon fichier php en galèrant un peut et en me creusant grandement les méninges pour modifier ce que je pouvais faire avec lecture de pleins de post-forum. Donc pour le coup je ne vous serais pas d'une grande aide malheureusement. Je vous invite à vous tourner vers les pros de la programmation php dans le forum prestashop. Cordialement. Edited June 21, 2014 by businessphoneandcom (see edit history) Link to comment Share on other sites More sharing options...
zellige Posted June 21, 2014 Share Posted June 21, 2014 Je confirme donc pour ceux qui souhaitent afficher les produits en stock ET AUSSI les produits hors stock commandables (seuls les produits hors stock non commandables ne seront pas affichés) il vous faut mettre ceci : dans votre productlist.tplaprès:<ul id="product_list" class="clear">{foreach from=$products item=product name=products} ajoutez {if ($product.allow_oosp || $product.quantity > 0)} et en fin de page avant{/foreach} ajoutez{/if} SI vous avez comme moi une product list qui propose le double affichage (en liste ou en grille) , il faudra mettre ce code en double. Dans mon cas j'ai {if $smarty.cookies.product_mode =='list'} <ul id="product_list" class="list_view clear"> {foreach from=$products item=product name=products} et {if $smarty.cookies.product_mode =='grid' || $smarty.cookies.product_mode ==''} <div id="product_list" class="grid_view clear"> {foreach from=$products item=product name=products} {if ($product.allow_oosp || $product.quantity > 0)} Je suis sous prestashop 1.5.6.2 Il manque maintenant à rectifier le fichier PHP pour que ce dernier prenne en compte la condition "hors stock mais commandable" pour ne pas avoir de trous dans la fiche produit... Je cherche de mon côté, si quelqu'un peut m'aider à me dépatouiller , merci d'avance ! (merci quand meme pour votre réponse Buisnessphone...) Link to comment Share on other sites More sharing options...
Eolia Posted July 17, 2014 Share Posted July 17, 2014 J'ai développé un module gratuit qui répondra peut-être à votre demande: http://www.prestashop.com/forums/topic/344050-free-update-elements-display-only-active-products-categories/ Link to comment Share on other sites More sharing options...
akhawat Posted October 2, 2014 Share Posted October 2, 2014 la classe !!! rien à dire parfait Link to comment Share on other sites More sharing options...
traivore Posted January 9, 2015 Share Posted January 9, 2015 Merci Eolia pour ce module, c'est nikel... Juste un petit bémol par raport à cette solution : J'ai remarqué que le visiteur qui arrive dans la boutique via les moteurs de recherche et par le biais d'un lien renvoyant sur un produit désormais hors stock... ne reste pas dans la boutique, sans doute parce qu'il tombe sur un message laconique et frustrant "produit hors stock". Le plus souvent, il ne cherche même pas à savoir si d'autres produits de la même catégorie sont disponibles. Ne serait-il pas possible alors que cette page "produit non disponible" soit remplacée par la page catégorie de ce produit devenu hors stock? Merci à ceux qui auraient la solution Link to comment Share on other sites More sharing options...
Eolia Posted January 9, 2015 Share Posted January 9, 2015 (edited) Merci Eolia pour ce module, c'est nikel... Juste un petit bémol par raport à cette solution : J'ai remarqué que le visiteur qui arrive dans la boutique via les moteurs de recherche et par le biais d'un lien renvoyant sur un produit désormais hors stock... ne reste pas dans la boutique, sans doute parce qu'il tombe sur un message laconique et frustrant "produit hors stock". Le plus souvent, il ne cherche même pas à savoir si d'autres produits de la même catégorie sont disponibles. Ne serait-il pas possible alors que cette page "produit non disponible" soit remplacée par la page catégorie de ce produit devenu hors stock? Merci à ceux qui auraient la solution Il y a une solution Ouvrez votre fichier /controllers/front/ProductController.php et suivez les indications ci-dessous: http://www.prestashop.com/forums/topic/236298-afficher-uniquement-les-produits-en-stock/page-3?do=findComment&comment=1920653 Edited January 9, 2015 by Eolia (see edit history) Link to comment Share on other sites More sharing options...
traivore Posted January 9, 2015 Share Posted January 9, 2015 Merci pour cette réponse flash J'ai vidé le cache et j'ai modifié le fichier mais je tombe encore sur la page "produit non disponible";;;une idée? Link to comment Share on other sites More sharing options...
Eolia Posted January 9, 2015 Share Posted January 9, 2015 (edited) Ouvrez votre fichier /controllers/front/ProductController.php et remplacez dans le switch: default: header('HTTP/1.1 404 Not Found'); header('Status: 404 Not Found'); $this->errors[] = Tools::displayError('This product is no longer available.'); break; par default: header('HTTP/1.1 302 Moved Temporarily'); header('Cache-Control: no-cache'); if(!empty($this->product->id_category_default)) header('Location: '.$this->context->link->getCategoryLink($this->product->id_category_default)); else header('Location:index.php'); break; Edited November 26, 2015 by Eolia (see edit history) Link to comment Share on other sites More sharing options...
traivore Posted January 9, 2015 Share Posted January 9, 2015 Merci beaucoup Eolia! Vous êtes mon super héros Link to comment Share on other sites More sharing options...
traivore Posted March 25, 2015 Share Posted March 25, 2015 Ouvrez votre fichier /controllers/front/ProductController.php et remplacez dans le switch: default: header('HTTP/1.1 404 Not Found'); header('Status: 404 Not Found'); $this->errors[] = Tools::displayError('This product is no longer available.'); break; par default: header('HTTP/1.1 302 Moved Temporarily'); header('Cache-Control: no-cache'); header('Location: '.$this->context->link->getCategoryLink($this->product->id_category_default)); break; Bonjour Eolia, J'utilise votre module update elements 2.4 pour désactiver les produits hors stocks. Il y a quelques temps j'ai fais une modification du fichier productcontroller.php pour renvoyer vers la page catégorie lorsque le produit est désactivé. Cela fonctionne très bien et je vous en remercie. J'ai néanmoins constaté un effet secondaire inattendu. C'est que désormais les pages produits n'apparaissent plus dans les résultats de recherche dans google, ou plutôt si mais seulement, comment dire..."en arrière plan". Comme si le moteur de recherche considérait que le produit en question n'avait plus de "personnalité propre" et que sa fiche n'était qu'un fantôme perdu dans les limbes de la catégorie mère. Désolé pour ce langage qui n'est pas du tout technique mais je ne vois pas trop comment l'expliquer autrement. Je vous donne un exemple : captain swing n°69 : en recherchant dans google, seule apparaît la catégorie pour mon site mais pas le lien direct vers l'article. Le soucis c'est que je ne me souviens plus des modifications faites. N'y a-t-il pas un moyen d'expliquer aux moteurs de recherche qu'il ne faut présenter la catégorie uniquement lorsque le produit est hors stock? Merci pour l'aide que vous pourrez m'apporter Link to comment Share on other sites More sharing options...
Eolia Posted March 25, 2015 Share Posted March 25, 2015 Les seules modif effectuées sont celles citées ci-dessus. Le produit captain swing n°69 est hors stock ou pas ? Link to comment Share on other sites More sharing options...
traivore Posted March 25, 2015 Share Posted March 25, 2015 Bonjour eolia Merci de m'avoir répondu... Le produit est bien en stock. Mais le résultat est le même pour tous les produits, même ceux récemment mis en ligne, lesquels n'apparaissent dans les moteurs de recherche que dans les pages "nouveaux produits" ou sous les catégories mères. Mais peut-être n'ai-je pas fait les bonnes modifs... Y aurait-il un moyen de coller ici le contenu de mon productcontroller? Link to comment Share on other sites More sharing options...
Eolia Posted March 25, 2015 Share Posted March 25, 2015 Non, un pastebin serait préférable^^ Mais si vous avez fait la modif ci-dessus, cela ne concerne que les pages 404 (pages inexistantes) donc ne devrait rien modifier pour les produits valides. Link to comment Share on other sites More sharing options...
traivore Posted March 25, 2015 Share Posted March 25, 2015 Un pastebin? je découvre ce mot... Link to comment Share on other sites More sharing options...
Eolia Posted March 26, 2015 Share Posted March 26, 2015 http://pastebin.com/ Collez le contenu de votre fichier et envoyez-moi l'url générée Link to comment Share on other sites More sharing options...
Eolia Posted March 26, 2015 Share Posted March 26, 2015 Votre fichier est correct. Vous avez fait le test en le remettant d'origine ? J'ai plutôt l'impression que cela provient du format d'url qui est tronqué par google. Peut-être raccourcir vos urls simplifiées ? Si je teste sur la recherche " Line album n°11 ", j'arrive bien sur votre fiche produit https://www.google.fr/search?q=Line+album+n%C2%B011&rlz=1C1ASUM_enFR466FR466&oq=Line+album+n%C2%B011 Dernier résultat en 1ère page Un début d'explication ici : http://modulaweb.fr/blog/2010/12/prestashop-et-url-rewriting-pourquoi-cest-la-cata/ du coup la modif vous évite l'erreur 404^^ Link to comment Share on other sites More sharing options...
traivore Posted March 26, 2015 Share Posted March 26, 2015 Donc j'ai bien fait la modif et elle me permet d'éviter l'erreur 404, tant mieux Mais j'ai quand même l'impression que plus les résultats sont nombreux par rapport à une recherche sur un mot-clef (et donc plus il y a de concurrence sur ce produit, en somme) et plus une petite boutique comme la mienne a du mal à se frayer un passage. A ce titre, les exemple de Line album 11 et captain swing 69 sont frappants. Quand je pense que panda avait pour objectif affiché de privilégier le contenu éditorial et que, dans le même temps, les premiers résultats sur de très nombreuses requêtes dans le domaine qui est le mien, renvoient à google shopping, priceminister et les autres, c'est vraiment se foutre du monde! Merci en tout cas pour votre patience. Link to comment Share on other sites More sharing options...
Eolia Posted March 26, 2015 Share Posted March 26, 2015 Parce que vous croyez que Google est humaniste ? http://www.6play.fr/m6/tous-les-programmes#/m6/capital/11471292-google-au-c-ur-du-geant-qui-veut-changer-le-monde Link to comment Share on other sites More sharing options...
traivore Posted March 26, 2015 Share Posted March 26, 2015 Non, bien entendu...Et la mauvaise foi est parfois sans borne...Mais il y aurait tant à dire! Link to comment Share on other sites More sharing options...
k.linise Posted April 28, 2015 Share Posted April 28, 2015 Bonjour, Une petite astuce simple à mettre en place pour masquer le produit dans la liste produits. Attention celà ne désactive pas le produit, il ne s'affiche pas en page catégorie uniquement. dans votre productlist.tpl après: <ul id="product_list" class="clear"> {foreach from=$products item=product name=products}ajoutez {if $product.quantity > 0}en fin de page avant {/foreach}ajoutez {/if} A vérifier si ça gère les déclinaisons. C'est vérifier, ça prend en compte les déclinaisons Edited by Muche, 18 April 2013 - 10:07 AM. JF Référenceur likes this Like This Un [RESOLU] 100% de chances de futures réponses Bonjour, Il me semble que pour que ça gère le stock des déclinaisons, il faut mettre : {if ($product.allow_oosp || $product.quantity > 0 || $product.quantity_all_versions > 0)} Cordialement Philippe Bonsoir ça fonctionne bien aussi sous Prestashop 1.6. la dernière version et pour la version Cloud de prestashop. Merci Link to comment Share on other sites More sharing options...
mondeduvelo Posted October 27, 2016 Share Posted October 27, 2016 Bonjour, Une petite astuce simple à mettre en place pour masquer le produit dans la liste produits. Attention celà ne désactive pas le produit, il ne s'affiche pas en page catégorie uniquement. dans votre productlist.tpl après: <ul id="product_list" class="clear"> {foreach from=$products item=product name=products} ajoutez {if $product.quantity > 0} en fin de page avant {/foreach} ajoutez {/if} A vérifier si ça gère les déclinaisons. C'est vérifier, ça prend en compte les déclinaisons Bonjour, je viens d'essayer cette méthode sur un PS 1.6.1.4, il me masque bien les produits nickel par contre j'ai des espaces vides auriez vous une idée ? cf par exemple ici https://velo-electrique.valdeloirevelo.fr/22-vtc-electrique Merci d'avance pour votre aide bonne journée Link to comment Share on other sites More sharing options...
mondeduvelo Posted May 17, 2017 Share Posted May 17, 2017 (edited) personne j'ai toujours le soucis il me compte aussi le nombre de produit hors qu'il n'y a pas de stock et soucis avec les déclinaisons Edited May 17, 2017 by mondeduvelo (see edit history) Link to comment Share on other sites More sharing options...
Tit34200 Posted April 23, 2019 Share Posted April 23, 2019 Je relance le sujet. Je suis sous 1.6.1.23 . J'ai testé ça qui fonctionne bien, mais pose des problèmes d'affichage dans les catégories: <ul id="product_list" class="clear"> {foreach from=$products item=product name=products} ajoutez {if $product.quantity > 0}en fin de page avant {/foreach}ajoutez {/if} Malheureusement, le module d'Eolia n'est plus disponible. Avez-vous trouvé une parade depuis ? Link to comment Share on other sites More sharing options...
Eolia Posted April 23, 2019 Share Posted April 23, 2019 Il est disponible ici^^ https://eoliashop.com/updateelements Link to comment Share on other sites More sharing options...
Tit34200 Posted April 23, 2019 Share Posted April 23, 2019 Merci pour ta réponse rapide. Et cela n'affecte pas l'affichage ? Link to comment Share on other sites More sharing options...
Eolia Posted April 23, 2019 Share Posted April 23, 2019 c'est a dire ? Le module passe les produits en visiblité "aucune" lorsqu'il n'y a plus de stock ou modifie la décli par défaut si produit avec déclis. Les produits ne seront donc plus montrés sur la boutique et réapparaitront si leur stock redevient positif. Si quelqu'un (ou un bot comme google) teste l'url qu'il avait en mémoire, il verra le produit mais ne pourra le commander. Link to comment Share on other sites More sharing options...
Tit34200 Posted April 23, 2019 Share Posted April 23, 2019 Voici une catégorie de mon site avec la modif que j'ai faite dans product-list.tpl Ca cache les produits en rupture mais crée le désordre dans les pages: https://www.planet-fouta.fr/17-fouta-plate https://www.planet-fouta.fr/17-fouta-plate?p=2 Le site est censé en affiché 25 par page, vous verrez qu'en deuxième page, le fait de cacher les produits en rupture de stock de cette manière on se retrouve avec 11 résultats. Link to comment Share on other sites More sharing options...
Eolia Posted April 23, 2019 Share Posted April 23, 2019 ben oui c'est logique.... le code php envoie 25 produits et vous en cachez une partie^^ Mon module supprime les produits indispos AVANT de les envoyer sur le front, vous en aurez bien 25 par page Link to comment Share on other sites More sharing options...
Tit34200 Posted April 23, 2019 Share Posted April 23, 2019 (edited) Ok parfait, je voulais m'en assurer. Je l'ai acheté, et testé: impec 😉 Edited April 23, 2019 by Tit34200 (see edit history) Link to comment Share on other sites More sharing options...
jerome_08 Posted April 25, 2019 Share Posted April 25, 2019 Bonjour Je rouvre ce sujet, en fait sous prestashop 1.7 les produits en stock 0 sont obligatoirement visible en front office ???? il n'y a aucune option native pour ne pas les afficher? il faut passer par des modules tiers pour les cacher? Merci Jerome Link to comment Share on other sites More sharing options...
BeHuman Posted October 25, 2019 Share Posted October 25, 2019 (edited) salut, je remonte le poste. Pour masquer les produits hors stock tout en prenant en compte les produits ayant des déclinaisons, j'ai ajouté dans le fichier product-list.tpl du theme: Quote Prestashop version 1.6.1.13 En dessous de {foreach from=$products item=product name=products} {if (!isset($product.available_for_order) || !$product.available_for_order) }{continue}{/if} {if (!isset($product.quantity_all_versions) && $product.quantity <= 0) } {continue} {elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions <= 0) } {continue} {/if} Un seul problème persiste. C'est la gestion des itérations pour l'affichage des produits en block. ++ Edited October 25, 2019 by BeHuman Ajout de la version de prestashop (see edit history) Link to comment Share on other sites More sharing options...
BeHuman Posted October 28, 2019 Share Posted October 28, 2019 Pour la gestion des itérations de l'affichage en block, j'ai trouvé une solution ... {assign var='iterationMod' value=0} {foreach from=$products item=product name=products} {if (!isset($product.available_for_order) || !$product.available_for_order)} {continue} {/if} {if (!isset($product.quantity_all_versions) && $product.quantity <= 0) } {continue} {elseif (isset($product.quantity_all_versions) && $product.quantity_all_versions <= 0) } {continue} {/if} {math equation="(it+1)" it=$iterationMod assign=iterationMod} ... Il faut ensuite remplacer dans le template les occurences de la variable $smarty.foreach.products.iteration par $iterationMod Mais vus que la résolution d'un problème nous amènes presque toujours à un autre problème, j'ai pour le coup un souci avec le nombre total de produits. Pour le coup, le nombre affiché dans les paginations n'est plus correcte. Je remonterais ma solution une fois que je l'aurais trouvé. ++ Link to comment Share on other sites More sharing options...
effisk Posted July 9 Share Posted July 9 Hello! 2024, toujours pas de solution native pour n'afficher que les produits en stock sur les pages de listing ? Link to comment Share on other sites More sharing options...
Eolia Posted July 9 Share Posted July 9 Si, dans la prochaine version de PhenixSuite Link to comment Share on other sites More sharing options...
effisk Posted July 9 Share Posted July 9 Je n'ai pas bien compris de quoi il s'agit. Un fork de prestashop? Je suis sous la 1.7.6.8, je n'ai pas l'impression que cela me concerne. Link to comment Share on other sites More sharing options...
Eolia Posted July 9 Share Posted July 9 En effet, c'est un fork de la 1.6, bien supérieur en fonctionnalités, compatibilités et fonctionnalités par rapport aux 1.7/8 https://eoliashop.com/prestashop-new Link to comment Share on other sites More sharing options...
effisk Posted July 9 Share Posted July 9 ok, merci. Ca ne répond donc pas à mon problème. Link to comment Share on other sites More sharing options...
Eolia Posted July 9 Share Posted July 9 Bah, ce module est toujours disponible hein^^ https://eoliashop.com/modules-prestashop/Prestashop15-16/updateelements Link to comment Share on other sites More sharing options...
effisk Posted July 9 Share Posted July 9 5 hours ago, Eolia said: Bah, ce module est toujours disponible hein^^ https://eoliashop.com/modules-prestashop/Prestashop15-16/updateelements Pas mal, merci. Je vois dans la description "Fonctionne sur toutes les versions depuis la 1.3 jusque 1.7", ça inclut la version 1.7.6.8 ? Link to comment Share on other sites More sharing options...
Eolia Posted July 10 Share Posted July 10 Oui Link to comment Share on other sites More sharing options...
effisk Posted July 10 Share Posted July 10 12 hours ago, Eolia said: Oui 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