Prestashop – Deaktiver “ikke på lager” produkter 1

Er du også en af dem som driver en Prestashop webshop, og ikke tillader din kunder at købe noget som ikke er på lager? Irriteret over at produkter som ikke er på lager, stadig vises i webshoppen? Sidder du manuelt og deaktiverer produkter som ikke er på lager, så det ikke skaber støj på din webshop?

Så har jeg et kanon godt tip til dig, det kræver dog lidt arbejde men ikke særlig meget – Du skal også være klar på at skrive lidt SQL kode, men jeg fortæller dig hvad du skal gøre. Er du stadig usikker? så få din udvikler til det, det tager kun 5 minutter at udføre.

“Ikke på lager” produkter

Prestashop har desværre ikke skrevet kode til at produkterne bliver usynlige (hvis man vil have det) fra ens side. Derfor sidder jeg f.eks selv manuelt og fjerner de boxershorts fra BilligeBoxers.dk som ikke er på lager, for ikke at skabe støj eller irritation for den kunde som virkelig gerne ville have det ene par boxershorts, som vi netop ikke har på lager. Indtil videre har der ikke rigtigt været en god løsning på hvordan man automatisk kan deaktivere produkter som ikke er på lager, men men…. Det kan faktisk lade sig gøre, løsningen er ikke så køn… men det virker!

Automatisk deaktivering af produkter – Prestashop

Det kræver at du har mulighed for at få adgang til din Prestashop database, for vi skal nemlig skrive lidt SQL kode. Er du på Meebox’s webhotel, så ved jeg med sikkerhed at det virker. Da de har “sql trigger” funktionen i deres phpMyAdmin. Så skal vi ikke bare gå i krig med det samme?

Først og fremmest skal du få adgang til din PhpMyAdmin og gå direkte til din Prestashop database.

En SQL Trigger kræver bare 4 ting for den er “godkendt”:

  1. Et unikt navn
  2. En tabel som triggeren tilhører
  3. Hvornår skal denne trigger køre
  4. Hvad triggeren indeholder

Med disse informationer, så kan vi nu skrive vores SQL trigger til Prestashop produkterne. Den tabel vi skal have fat i hedder “ps_stock_available” medmindre du har valgt et andet Prefix til tablerne. Du kan gøre det ved at vælge SQL forespørgelsesvinduet og skrive følgende:

[sql]
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
[/sql]

Så hvad sker der i denne SQL kode?

Det denne SQL kode gør er at når der sker en database opdatering på tabellen “ps_stock_available” så skal du køre triggeren “change_active_after_update”. Det “change_active_after_update” gør er at kigge på hver row i tabellen, og sætter produktets status til deaktiveret (sætter active til 0) hvis “ps_stock_Available” column “Quantity” er lig med 0. Hvis nu quantity er større end 0 så aktiverer den det gældende produkt (altså sætter active til 1).

One comment on “Prestashop – Deaktiver “ikke på lager” produkter

  1. Reply Anders Helbo mar 20,2015 10:44

    Fedt, lige hvad jeg står og mangler :-)

Skriv et svar