Zawartość artykułu
Co to są kombinacje atrybutów?
Przypomnimy tak dla zasady niewtajemniczonym. Jak znasz temat – opuść tę sekcję 😉
Kombinacje atrubutów to przede wszystkim potężne narzędzie w Presta Shop. (Kiedyś może przybliżymy bardziej ich wszystkie możliwości, ale nie o tym dzisiaj)
Atrybuty w Presta Shop tym się różnią np. od cech – że mogą wpływać na cenę. Atrybuty można powiedzieć to cechy (warianty danego produktu),
które wpływają na cenę w odpowiednim ich ustawieniu. Atrybuty przeważnie znajdują się obok opisu konkretnego przedmiotu i wybieramy je za pomocą drop-downów (list rozwijanych). Każde ułożenie tych drop-downów to właśnie pojedyncza kominacja atrybutów. I jak chcemy – może mieć ona za każdym razem inną cenę w zależności od wybranej konfiguracji.
Np. 2 przykładowe kombinacje atrybutów są pokazane poniżej:
Telefon komórkowy A w ustawieniu drop-downów:
Wybieramy a) czarną obudowę i b) ładowarkę sieciową – cena: 550,00 zł.
Telefon komórkowy B w ustawieniu drop-downów:
Wybieramy a) czerwoną obudowę i b) ładowarkę USB – cena: 470,00 zł.
Sprawa wydaje się prosta. Jednak pomyślmy że mamy 3 takie dropdowny (np. jeszcze słuchawki w kolorze białym albo czarnym) określające konfigurację danego produktu a w nim po 2 wartości i każda z możliwych konfiguracji – ma inną cenę.
Matematyka jest bezwzględna:) W takim przypadku 1 produkt ma 2*2*2 = 8 różnych cen. A produktów w bazie jest 0.5 tys. Czyli przy zmianie cen u dostawcy musimy zmienić ręcznie 4 tysiące wystąpień!
Poniżej sposób który zamiast 3 dni klikania w PrestaShop zajmie Wam niewiele więcej niż aktualizacja cen w Excelu.
Logowanie do phpMyAdmin i wyciągnięcie atrybutów w formie pliku Excela
Logujemy się do phpMyAdmin (zapytaj Twojego providera serwerowego jaki jest link na Twoim serwerze do tego programu).
Używamy dostępów w pliku konfiguracyjnym PrestaShop:
config/settings.inc.php
W prawym oknie klikamy nazwę naszej bazy. W prawym oknie klikamy zakłądkę SQL i pojawi się okno wprowadzania zapytania do bazy następnie wywołujemy poniższe zapytanie:
SELECT DISTINCT pl.name, pa.*, ag.id_attribute_group, ag.is_color_group, agl.name AS group_name, al.name AS attribute_name, a.id_attribute, pa.unit_price_impact FROM ps_product_attribute pa LEFT JOIN ps_product_attribute_combination pac ON pac.id_product_attribute = pa.id_product_attribute LEFT JOIN ps_attribute a ON a.id_attribute = pac.id_attribute LEFT JOIN ps_attribute_group ag ON ag.id_attribute_group = a.id_attribute_group LEFT JOIN ps_attribute_lang al ON (a.id_attribute = al.id_attribute AND al.id_lang = 1) LEFT JOIN ps_attribute_group_lang agl ON (ag.id_attribute_group = agl.id_attribute_group AND agl.id_lang = 1) LEFT JOIN ps_product_lang pl ON (pa.id_product = pl.id_product) ORDER BY pa.id_product_attribute;
Zjeżdżamy pod wyniki zapytania na dół strony i wybieramy export wyników wyszukiwania:
Wybieramy te opcje exportu:
następnie klikamy “Wykonaj” i ściagamy plik CSV z wynikami zapytania.
Edycja cen w arkuszu kalkulacyjnym.
Plik otwieramy w LibreOffice lub MS Office tak otwieramy aby plik umożliwiał edycję cen tzn. w kolumnie B było ID-KOMBINACJI ATRYBUTU a w kolumnie J-CENA-DANEJ KOMBINACJI ATRYBUTU.
Zmieniamy ceny wg uznania kierując się opisem w wierszach a szczególnie w kolumnie A (nazwa produktu) oraz kolumnie T (nazwa danej kombinacji atrybutu). Na pewno zmienienie cen w takiej postaci będzie znacznie wygodniejsze niż klikanie po adminie sklepu.
Tworzenie pliku wsadowego SQL.
Gdy ukończymy edycję cen zostawiamy tylko 2 kolumny – wspomniane wyżej kolumny A (numer id kombinacji produktu) oraz J (cena – już zmieniona – kombinacji atrybutu). Resztę kolumn usuwamy.
Zawartość kolumny A (numer id kombinacji produktu) przenosimy do kolumny D, a zawartość kolumny J (cena kombinacji atrybutu) przenosimy do kolmny B:
W kolumnie (pustej) A wstawiamy od A1 aż do końca wierszy wartość (dokłądnie taką z apostrofem na końcu!):
UPDATE `ps_product_attribute` SET `price` = '
W kolumnie (pustej) C wstawiamy od C1 aż do końca wierszy wartość (dokłądnie taką z apostrofem na początku!):
' WHERE `id_product_attribute` =
W kolumnie (pustej) E wstawiamy od C1 aż do końca wierszy wartość (jeden znak – sam średnik):
;
Nasz plik powinien wygladać tak:
Zaznaczamy całość dokumentu Excela i wklejamy go do jakiegoś zaawansowanego edytora tekstowego (w Windows np PSPAD) a w Linux – gedit. Następnie usuwamy wszystkie wystąpienia “tabulatorów” (tabulacji) – występują one w miejscach gdzie były granice między tabelami. Najlepiej usunąć je wszystkie na raz poprzez opcję znajdź i zamień. Zaznaczamy jedną tabulację wklejamy ją w znajdź a w zamień pozostawiamy puste pole. Poniżej wystąpienia tabulacji w takim pliku:
Gdy już mamy plik uwolniony od tych znaków – zapisujemy go jako plik SQL (z rozszerzeniem .sql). Nazwa jest dowolna.
Następnie kompresujemy ten plik ZIPem (ważne aby nie np. RARem) aby mniej zajmował.
Aktualizacja cen.
Wracamy do naszego programu phpMyAdmin. Używamy opcji import:
Wskazujemy na dysku plik stworzony plik ZIP i go przesyłamy. GOTOWE! Ceny zaktualizowane 😉
witam
bardzo ladnie
ja mam pytanie czy tez mozna tak zrobic z Atrybutami i wartosciami produktow poniewaz
na serwerze Kei.pl mieli i mieli i pda im serwer.
Mam presta shop no i sporo atrzbutow spryedajemy soczeweki kontaktowe
pozdrawiam
nino
Tutaj przedstawiony sposób służy do aktualizacji już wprowadzonych atrybutów. Rozumiem, że chodzi o generowanie kombinacji, które jest przerwane przez ograniczone zasoby Państwa serwera? Jeśli zasobów nie da się zwiększyć jedyna droga to zgranie całej bazy oraz plików na inny serwer (np. lokalny) przebudowanie kombinacji wg potrzeb i wgranie bazy ponownie. Potem jeśli już chodzi aktualizacje np. cen – można bazować na tym poście.
a ja się zastanawiam po co te join-y. Przecież sam SELECT * FROM ps_product_attribute wystarczy chyba.
Choćby po to aby maksymalnie wiedzieć o który atrybut chodzi, aby wiedzieć jaką wpisać cenę przy aktualizacji
widzę że w tej chwili nie jest wystarczającym aktualizacja tabeli ps_product_attribute ale także ps_product_attribute_shop
Dzięki za trafną uwagę, istotnie to też należy uzgodnić
[…] Artykuł dotyczy aktualizacji cen nie opartych na kombinacji atrybutów. Jak to zrobić opisaliśmy w innym artykule. […]
Jeśli ktoś nie czuje się na siłach, może wykorzystać takie rozwiązania jak np. moduł Mass Price Update Plus. Niestety są to dodatki płatne, ale znacznie uproszczają problem. Wybór takich rozwiązań jest relatywnie do problemu dosyć spory, a i ceny różne, ale myślę, że ten wymieniony powyżej jest najbardziej elastyczny, ponieważ posiada możliwość wyfiltrowania konkretnych kombinacji produktu. Aby wybrać coś dla siebie najlepiej osobiście przejrzeć odpowiedni dział dodatków pod adresem https://addons.prestashop.com/pl/433-szybkie-edytowanie
a czy jest sposób by połączyć filtr który brałby wartość i z cechy i z atrybutu?
mamy taka sytuacje
produkt 1 ma kolor -> szary, w cechach
produkt 2 ma kolor-> zależy od konfiguracji, w cechach –
– a w atrybutach ma do wyboru biały lub szary
i teraz czy jest sposób zeby dodac jeden filtr ktory , wyswietli mi oba produkty?
Niestety cechy są niezależne od atrybutów. Ale można nadać atrybut kolor i przyporządkować jedną domyślną wartość, tutaj w produkcie #1 – szary kolor. Wtedy cecha tam jest niepotrzebna
[…] tym artykule pod paragrafem o treści „Zjeżdżamy pod wyniki zapytania na dół strony i wybieram… wykonywaliśmy to na analogiczny […]
Po zainstalowaniu pewnego modułu dotyczącego kombinacje wszystkie kombinacje zostały wyzerowane i teraz ani jedne z produktów nie ma kombinacji domyślnej. Masakra! Czy ktoś wie jak masowo zmienić lub nadać kombinację domyślą w prestashop 1.6? Muszę do 600 produktów wchodzić wybierać kombinacje i ustawiać ręcznie jedną jako domyślną.
rozumiem, że nie masz kopii bezpieczeństwa bazy danych z przed instalacji tego modułu?
Nie, niestety nie mam, stało się to przez przypadek i nie zauważyłem tego zjawiska. Do tego teraz cała presta odmówiła posłuszeństwa bo nie mogę edytować i wprowadzać nic nowego do sklepu. Wyłączyłem większość modułów dokupionych z x13 i presta-mod ale nie pomogło. Prawie wszystko wyłączyłem, a kółeczka się kręcą bez końca jak tylko wchodzę do edycji produktów. Aktualizacja spowoduje wywalenie wszystkiego co dopisaliśmy pod siebie, czyli dodatkowe pola z cechami charakterystycznymi dla produktów http://www.muzyka-relaksacyjna.pl oraz rozbudowane odtwarzacze mp3. Chętnie przeszedłbym na 1.7 ale to sporo pracy w moim wypadku bo nie można tego po prostu przenieść nikt nie chce się podjąć takiej migracji. Przymierzam się do tego. W tej chwili staram się za wszelką cenę przywrócić funkcjonalność przynajmniej tak aby można było dalej normalnie pracować.
czyli po instalacji tamtego modułu do kombinacji zaczęły się problemy? czy poza tym coś jeszcze było zmieniane? może Twój provider hostingowy po analizie logów będzie w stanie Ci powiedzieć co powoduje problem. ewentualnie włącz chwilowo pokazywanie błędów PHP w config/defines.inc.php