Press "Enter" to skip to content

Zbiorcza – masowa aktualizacja cen w kombinacjach atrybutów

Admin 15

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:

PrestaShop Kraków

Wybieramy te opcje exportu:

PrestaShop Kraków

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:

PrestaShop Kraków

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:

PrestaShop Kraków

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:

PrestaShop Kraków

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:

PrestaShop Kraków

Wskazujemy na dysku plik stworzony plik ZIP i go przesyłamy. GOTOWE! Ceny zaktualizowane 😉

  1. Nino Nino

    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

  2. admin admin

    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.

  3. Łukasz Łukasz

    a ja się zastanawiam po co te join-y. Przecież sam SELECT * FROM ps_product_attribute wystarczy chyba.

    • admin admin

      Choćby po to aby maksymalnie wiedzieć o który atrybut chodzi, aby wiedzieć jaką wpisać cenę przy aktualizacji

  4. widzę że w tej chwili nie jest wystarczającym aktualizacja tabeli ps_product_attribute ale także ps_product_attribute_shop

    • admin admin

      Dzięki za trafną uwagę, istotnie to też należy uzgodnić

  5. Robay Robay

    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

  6. michał michał

    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?

    • Admin Admin

      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

  7. 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ą.

    • Admin Admin

      rozumiem, że nie masz kopii bezpieczeństwa bazy danych z przed instalacji tego modułu?

  8. 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ć.

    • Admin Admin

      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

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Witryna wykorzystuje Akismet, aby ograniczyć spam. Dowiedz się więcej jak przetwarzane są dane komentarzy.

Zobacz także !
Dla użytkowników tej wersji PrestaShop jest to dość ważna luka…