Klasa Cart (Koszyk)

Tutaj można zgłaszać wszelkie wykryte błędy w Opencart, wraz z ewentualnym opisem ich naprawienia. W tytule posta warto podać wersję, której dany błąd dotyczy.

Klasa Cart (Koszyk)

Postprzez jang1200 » 12 kwi 2011, o 14:36

Coś tam sobie skrobałem i potrzebowałem dane z koszyka, no i zacząłem przyglądać się tej klasie... ręce opadają...
Zróbcie sobie u siebie test :
1. trzeba wrzucić do koszyka jakikolwiek przedmiot
2. zedytować plik /system/library/cart.php , w linii ~24 jest coś takiego :
Kod: Zaznacz cały
foreach ($this->session->data['cart'] as $key => $value) {
po tej linii należy dopisać
Kod: Zaznacz cały
var_dump($key);
i w przeglądarce odświeżyć stronę z koszykiem.
Co tam zobaczymy ? CZTERNAŚCIE RAZY wyświetli się numer produktu który jest w koszyku...
3. teraz dodajemy znak komentarza, powinno to wyglądać tak :
Kod: Zaznacz cały
//var_dump($key);
i zapisujemy plik (koniecznie w tym momencie bo inaczej będzie wywalało błędy w pkt.4)
4. Klikamy w koszyku "Zakupy" , zakładamy konto czy się logujemy jak już mamy konto ... wybieramy przesyłkę itd aż dochodzimy do ostatniej strony zakupu (w której potwierdzamy zakup)
5. w klasie Cart kasujemy znaki komentarza czyli znowu ma wyglądać to tak
Kod: Zaznacz cały
var_dump($key);
zapisujemy plik i w przeglądarce znowu robimy "Odśwież" i tym razem widzimy DZIEWIĘTNAŚCIE RAZY numer produktu....

Co to znaczy ? tzn., że super geniusz najwidoczniej nie ma na czym gotować obiadów i robi to na procesorze w trakcie gdy klienci robią zakupy ...
a tak na poważnie ? tzn. , że 14 razy w koszyku a później 19 razy pobierane są DOKŁADNIE TE SAME DANE przy pomocy CIĄGLE TEGO SAMEGO zapytania (linia ~37 klasy Cart)) i wszystko po to aby wyświetlić jeden jedyny produkt... Oczywiście dla 10 produktów jest 10 razy tyle zapytań czyli 140 i 190 ...

Jeśli ktoś nie chce sobie bądź na serwerze usmażyć procesora to zapraszam do testów - http://oporniczek.pl/demo1493/
Co w zamian (po zakończeniu testów) ?
Każdy kto weźmie udział w testach otrzyma ZA DARMO porawioną klasę.

Co daje ta poprawiona klasa ?
- JEDEN produkt = JEDNO zapytanie do bazy danych (zamiast 14 - 19).
- DZIESIĘĆ produktów = DZIESIĘĆ zapytań do bazy (zamiast 140 -190)

Jak powinny wyglądać testy ?
1. Należy założyć konto, jeśli się ktoś wstydzi innych swoich danych to napewno email MUSI być prawdziwy bo właśnie na ten email będę wysyłał poprawioną klasę.
2. Jednego dnia należy złożyć jedno zamówienie a drugie klika dni później (w międzyczasie może jeszcze coś poprawię)
3. W nazwach produktów jest podana stawka VAT, ceny widoczne w sklepie są netto aby łatwo można było przeliczyć, ceny zresztą dla ułatwienia są 10PLN i 100PLN
4. Przed kliknięciem w "Potwierdź zamówienie" proszę sprawdzić czy VAT jest dobrze przeliczony.
5. Koniecznie trzeba kliknąć w "Potwierdź zamówienie" bo nie będę zamówień szukał gdzieś tam w jakichś zagubionych, niedokończonych.
6. W komentarzu do zamówienia proszę wpisać NICK z forum.

Testy zakończymy gdy 50 osób złoży po dwa zamówienia i nikt nie znajdzie błędu.
S? trzy rodzaje bia?ej ?mierci ? s?l ? cukier i ? lekarz pierwszego kontaktu.
jang1200
 
Posty: 274
Dołączył(a): 6 mar 2010, o 19:17

Re: Klasa Cart (Koszyk)

Postprzez adikon.oc » 13 kwi 2011, o 15:18

polecam także poprawę tego kodu w tej samej klasie

linia 71-76
Kod: Zaznacz cały
foreach ($this->session->data['cart'] as $k => $v) {
    $array2 = explode(':', $k);
    if ($array2[0] == $product_id) {
        $discount_quantity += $v;
    }
}


a na jaki?
może jang1200 w swojej poprawionej klasie koszyka wprowadzi jeszcze tą zmianę z tego wątku i ją udostępni
kod moge podesłać ale myśle, że już wiesz o co chodzi
adikon.oc
 
Posty: 603
Dołączył(a): 28 gru 2010, o 22:56

Re: Klasa Cart (Koszyk)

Postprzez jang1200 » 13 kwi 2011, o 18:50

adikon.oc napisał(a): ale myśle, że już wiesz o co chodzi
nie wiem o co chodzi :( , oczywiście nie chodzi o kod tylko nie mam czasu zastanawiać się nad tym co to robi (w kontekście całej reszty tej klasy), już jestem prawie zdecydowany na to aby zrobić to samo co zrobił activisio.pl , przepisać wszystko na nowo bo to ciągłe zastanawianie się co zrobić aby i inne moduły (innych ludzi) również działały jest jeszcze bardziej czasochłonne i wnerwiające aniżeli przepisanie wszystkiego od nowa. Tym bardziej, że dla 1.5.0 i tak znowu będzie trzeba wszystko znowu zmieniać.
S? trzy rodzaje bia?ej ?mierci ? s?l ? cukier i ? lekarz pierwszego kontaktu.
jang1200
 
Posty: 274
Dołączył(a): 6 mar 2010, o 19:17

Re: Klasa Cart (Koszyk)

Postprzez borubar » 5 sie 2011, o 12:22

Pierwsze zamówienie testowe złożone - problemów nie widzę, prócz tego, że wolno to wszystko Ci śmiga (chyba, że u mnie łącze szwankuje)

To tak na marginesie, bo nie wiem czy ty w ogóle to jeszcze testujesz...
borubar
 
Posty: 232
Dołączył(a): 27 mar 2011, o 12:19

Re: Klasa Cart (Koszyk)

Postprzez staniapl » 22 paź 2012, o 20:20

Chciałbym odświeżyć temat, obecnie używam OC 1.5.1 - mam pytanie czy w tej wersji klasa została poprawiona, czy nadal potrzebna jest poprawka :?:
Avatar użytkownika
staniapl
 
Posty: 631
Dołączył(a): 13 lut 2012, o 19:47
Lokalizacja: Zambr?w, Nowe Piekuty


Powrót do Zgłaszanie błędów w Opencart

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości

cron