Zawartość artykułu
Co to za funkcjonalność??
PrestaShop posiada bardzo przydatną wbudowaną funcję. Możemy do każdego produktu z osobna dołączyć dodatkową informacje, która „idzie” potem razem z zamówieniem tego produktu.
Możemy:
- Dołączyć plik graficzny do produktu. Np. logo, zdjęcie albo inną grafikę. Pomocna funkcja przy np. produktach z nadrukiem – koszulki, kubki itp. – potem wiadomo co nadrukować klientowi na produkcie.
- Dolączyć pole do wpisania tekstu. Czyli np. tekst graweru na biżuterii albo napis na dowolnym produkcie itp.
Oczywiście możemy dodać jedno tylko z tych pól. NIe jest konieczne dodawanie obu na raz.
Te 2 pola są domyślnie nieaktywne. Włącza się je na zakładce „Dostosowanie” w edycji konkretnego produktu:
Można także określic te pola jako obowiązkowe. Poprzez zaznaczenie kratki „Wymagany„.
Gdy wypełnimy te pola – na stronie tego produktu pojawia się moduł wgrywania pliku lub/i dodawania tekstu:
Funkcjonalność jest przyjemna gdy chodzi o 1 produkt. Sprawa się komplikuje, gdy musimy tak zmodyfikować np 6000 produktów na sklepie.. Niestety nie ma możliwości dodania określonego pola do wszystkich produktów na raz.
Z pomocą może przyjść wykonanie poniższych zapytań do bazy danych.
Po pierwsze.
Pozyskaj link do narzędzia PhpMyAdmin na Twoim serwerze i uruchom pole wywoływania komend – SQL.
Po drugie. Ekstremalnie ważne:
Wykonaj kopię bezpieczeństwa sklepu.
Jak zrobić te czynności – opisywaliśmy to np. w tym artykule: https://pskrk.com/masowa-aktualizacja-cen-produktow-w-presta-shop/
Zapytania MySQL.
UWAGA #1
W poniższych zapytaniach użyliśmy domyślnego tzw. prefixu czyli członu przed nazwą tabel. W naszym przypadku: „ps_„. W Twoim sklepie może być użyty inny prefix i należy to uwzględnić.UWAGA #2
Poniżej prezentujemy jak dodać oba typy pól do wszystkich produktów. Jeśli Tobie zależy na dodaniu tylko np. pola tekstowego należy poniższe zapytania odpowiednio zmodyfikować.UWAGA #3
Założenie jest takie, że na sklepie nie ma już dodanych pól tekstowych lub do uploadu pliku. Wszystkie juz istniejące pola będą usunięte.UWAGA #4
Poniższe zapytania polegają na ID języka polskiego = 2, a funkcja multistore jest nieaktywna. Tzn. jest tylko 1 sklep o ID = 1.
Do dzieła. Po kolei wklejamy komendy do pola SQL i wciskamy Uruchom / Go
1. Usuwamy juz istniejace pola:
TRUNCATE ps_customization_field; TRUNCATE ps_customization_field_lang;
2. Asekuracyjnie włączamy na sklepie funkcje pól do kastomizacji:
UPDATE `ps_configuration` SET `value` = '1' WHERE `name` = 'PS_CUSTOMIZATION_FEATURE_ACTIVE' ;
3. Wgrywamy do każdego produktu pole uploadu pliku:
INSERT INTO ps_customization_field (id_product,`type`,`required`) select `id_product`,0,0 FROM ps_product;
4. Wgrywamy do każdego produktu pole tekstowe:
INSERT INTO ps_customization_field (id_product,`type`,`required`) select `id_product`,1,0 FROM ps_product;
5. Wypełniamy tłumaczenia obu typów pól dla języka angielskiego (ID = 1), Uwaga – etykieta dla tego języka będzie pusta:
INSERT INTO ps_customization_field_lang (id_customization_field,`id_lang`,`id_shop`,`name`) select `id_customization_field`,1,1,'' FROM ps_customization_field;
6. Wypełniamy tłumaczenia obu typów pól dla języka polskiego (ID = 2), nadajemy tymczasową etykietę test:
INSERT INTO ps_customization_field_lang (id_customization_field,`id_lang`,`id_shop`,`name`) select `id_customization_field`,2,1,'test' FROM ps_customization_field;
7. Aktualizujemy tabele produktów oznaczając, że zawierają one pola kastomizacji:
UPDATE ps_product SET customizable = 1, uploadable_files =1, text_fields =1; UPDATE ps_product_shop SET customizable = 1, uploadable_files =1, text_fields =1;
8. Poprawiamy etykietę dla pól wgrywania pliku dla języka polskiego:
UPDATE ps_customization_field_lang SET `name` = 'Wgraj plik' WHERE id_customization_field IN ( SELECT `id_customization_field` FROM `ps_customization_field` WHERE `type` = 0 ) AND id_lang = 2;
9. Poprawiamy etykietę dla pól tekstowych dla języka polskiego:
UPDATE ps_customization_field_lang SET `name` = 'Dodaj tekst' WHERE id_customization_field IN ( SELECT `id_customization_field` FROM `ps_customization_field` WHERE `type` = 1 ) AND id_lang = 2;
Gotowe!
Po poprawnym wywołaniu tych komend każdy produkt będzie posiadał pola do kastomizacji 🙂 Niezależnie ile produktów liczy Twój sklep.
Jeśli zależy Ci na tylko 1 typie pola (np. chcesz mieć tylko pole tesktowe) odpowiednio zmodyfikuj w/w komendy albo użyj CSS do ukrycia określonego typu pola.
Powodzenia!
grafika: alphacoders.com
a gdzie zwiększyć ilość znaków dodawanych przez klienta w polu tekstowym np. chcemy sprzedawać publikacje artykułów na blogu przez sklep i klient przy zamówieniu by wklejał trećć jaka ma zostać opublikowana na stronie