wdrożenia PrestaShop

dodawanie nowych nietypowych atrybutów

  • 29 Odpowiedzi
  • 6970 Wyświetleń

0 użytkowników i 3 Gości przegląda ten wątek.

*

Offline zwora

  • Nowy
  • *
  • 19
  • 0
Odp: dodawanie nowych nietypowych atrybutów
« Odpowiedź #15 dnia: Grudzień 05, 2012, 03:03:05 pm »
Chyba podołam temu zadaniu. Kluczem do sukcesu jest odpowiednia modyfikacja product.tpl Niepotrzebnie ładowałem się w te moduły, ale to przez to, ze nie przypuszczałem, że to będzie można po prostu dodać w templatce (w końcu poszczególne atrybuty ustawia się w backoffice), a nie chciałem za bardzo ingerować w treść samego sklepu, bo wyczytałem gdzieś, że lepiej tego nie robić, jeśli chce się kiedyś robić upgrade do nowszej wersji.

*

Offline sower

  • Mieszkaniec
  • *****
  • 1,016
  • 3
    • I Love PrestaShop
  • PrestaShop: PS
  • Status: Programista
Odp: dodawanie nowych nietypowych atrybutów
« Odpowiedź #16 dnia: Grudzień 06, 2012, 07:37:35 am »
ale to tylko templetka ;)

poza tym masz coś takiego jak override ;) właśnie po to aby uniknąć problemów z upgrade.......... przy czym więcej problemów masz z modułami niż z poprawnie wykonaną modyfikacją core.
SZYBKA POMOC TECHNICZNA : gg 45116037
SKLEPY | MODUŁY | INTEGRACJE | POMOC TECHNICZNA

*

Offline zwora

  • Nowy
  • *
  • 19
  • 0
Odp: dodawanie nowych nietypowych atrybutów
« Odpowiedź #17 dnia: Grudzień 19, 2012, 05:15:50 pm »
Witam

Miałem trochę przerwy w swojej działalności przy sklepie, ale dzisiaj trochę nad nim posiedziałem i mam kolejny problem.

Już mam swoje dwa pola na wymiary, wprowadziłem walidację i update ceny wyświetlanej na stronie produktu (tak jak to się odbywa na stronie z linka podanego przez sowera). Ale nie wiem jak odświeżyć tą cenę, która jest następnie przekazywana do koszyka. Teraz jakkolwiek nie zmieniłbym wyświetlanej ceny to i tak w koszyku ląduje cena podstawowa produktu (ewentualnie zmodyfikowana przez atrybuty dodane z poziomu backoffice).

W źródle strony z linka jest coś takiego (frounding to nowa cena po zaokrągleniach):

document.buy_block.price_new.value=frounding;

Ale u mnie to nie działa, bo prawdopodobnie trzeba w jakimś pliku tpl dodać element price_new, ale nie wiem w którym pliku, a ze źródła strony ciężko to wywnioskować.

*

Offline zwora

  • Nowy
  • *
  • 19
  • 0
Odp: dodawanie nowych nietypowych atrybutów
« Odpowiedź #18 dnia: Grudzień 22, 2012, 11:07:48 am »
Może uściślę o co mi chodzi. Wartość pola price_new jest pobierana z formularza podczas zdarzenia onSubmit, które jest obsługiwane przez jakiś skrypt php (niby cart.php), który dane z formularza odpowiednio prześle dalej. Taki skrypt mógłby przesłać wartości pól do bazy danych, skąd koszyk będzie pobierał dane. Tylko, że nie mogę znaleźć jak te dane są przesyłane, żebym mógł dodać obsługę pola price_new (cart.php odsyła do innych skryptów i jakoś nie mogę się w tym odnaleźć). No i jeszcze nowe pole musi być jakoś interpretowane przez skrypt tpl tak, że onMouseOver nad koszykiem daje prawidłową wartość (no chyba, że to po prostu jest zwykłe pobieranie z bazy danych za pomocą skryptu php).
« Ostatnia zmiana: Grudzień 22, 2012, 12:12:32 pm wysłana przez zwora »

*

Offline zwora

  • Nowy
  • *
  • 19
  • 0
Odp: dodawanie nowych nietypowych atrybutów
« Odpowiedź #19 dnia: Grudzień 22, 2012, 01:16:27 pm »
W swoich poszukiwaniach po kodzie doszedłem do blockcart i zmieniłem już wywołanie metody ajaxCart.add w pliku ajax_cart.js, ale teraz muszę jakoś popracować nad tym obiektem, żeby takie wywołanie było prawidłowe (żeby dodanie nowej zmiennej wywołania powodowało uaktualnienie ceny).

*

Offline zwora

  • Nowy
  • *
  • 19
  • 0
Odp: dodawanie nowych nietypowych atrybutów
« Odpowiedź #20 dnia: Grudzień 23, 2012, 07:45:10 pm »
A czy mógłby ktoś przynajmniej opisać zależności pomiędzy plikami dotyczącymi koszyka i funkcje tych plików. Np. gdzie (w którym pliku) należy przechwycić dane wysłane przez ajaxCart.add() ?

*

Podemski

  • Gość
Odp: dodawanie nowych nietypowych atrybutów
« Odpowiedź #21 dnia: Grudzień 23, 2012, 10:15:14 pm »
Zdarzenia obsługiwane są przez kontrolery. Katalog /controllers/. Tam masz CartController.php i jeśli umiesz czytać kod to spokojnie znajdziesz to czego szukasz.

*

Offline zwora

  • Nowy
  • *
  • 19
  • 0
Odp: dodawanie nowych nietypowych atrybutów
« Odpowiedź #22 dnia: Grudzień 24, 2012, 09:57:01 am »
Dzięki za odpowiedź. Tak właśnie myślałem, że muszę je odebrać w cartController.php bo są tam odwołania do innych zmiennych wysyłanych przez ajaxCart.add() I już sobie odebrałem tam nową zmienna, ale mam kolejny problem, bo nie wiem jak wpłynąć na cenę w koszyku.

Robiłem takie takie testy:

Podmiana w cartController.php na:  $product['price_without_quantity_discount'] = 10;

Jak również  w classes/Product.php w funkcji addCustomizationPrice() mnożenie przez jakieś wartości (np. 10) następujących zmiennych:

$product_update['total_wt']
$product_update['total_customization_wt']
$product_update['total']
$product_update['total_customization']

I żadna z tych zmian nie wpłynęła na cenę w koszyku.

*

Offline mario

  • Mieszkaniec
  • *****
  • 640
  • 0
  • Płeć: Mężczyzna
Odp: dodawanie nowych nietypowych atrybutów
« Odpowiedź #23 dnia: Grudzień 24, 2012, 12:06:40 pm »
Zabrales sie za robote od tylu, gwarantuje ci to sporo problemow, cofania sie, zmiany koncepcji.
Zaczac powinienes od projektu !
Czeka cie naprawde duzo roboty.
O module zapomnij, modyfikuj core, robiac czeste kopie po kolejnych etapach.
Kazdy krok zamowienia zapisywany jest w bazie danych, konieczna rozbudowa kolumn, dodanie pol i triggerow do formatki dodawania produktu, itd. itp.
Pomysl, moze wymiary, ktore poda kupujacy traktowac jako atrybuty i zapisywac w bazie jako dodatkowe?
wtedy cena wyliczona bedzie pobierana z bazy

Integracja wf-mag presta
freelancer

*

Offline zwora

  • Nowy
  • *
  • 19
  • 0
Odp: dodawanie nowych nietypowych atrybutów
« Odpowiedź #24 dnia: Grudzień 25, 2012, 12:09:22 pm »
Cytuj
Pomysl, moze wymiary, ktore poda kupujacy traktowac jako atrybuty i zapisywac w bazie jako dodatkowe? wtedy cena wyliczona bedzie pobierana z bazy

Czy masz może na myśli features? Albo customization -> text fields? I przerobienie ich tak, żeby w templatce pojawiały się nie na zakładce u dołu, tylko tam gdzie chcę? To by było całkiem rozsądne rozwiązanie.

A może attributes i przerobienie w jakiś sposób na input type="text"?

To co wcześniej zacząłem robić to było na podstawie strony z linka podanego przez sowera, i tam to jakoś działa. Ale ze źródła strony zbyt wiele nie jestem w stanie wyciągnąć (tylko to, co wysyłane jest do przeglądarki).

*

Offline design4VIP

  • user
  • Mieszkaniec
  • *****
  • 3,866
  • 131
    • design4VIP z innej strony...
  • PrestaShop: PS
  • Status: Programista
Odp: dodawanie nowych nietypowych atrybutów
« Odpowiedź #25 dnia: Grudzień 25, 2012, 03:28:44 pm »
dalej nie rozumiem po co tyle kombinacji, pytan i niedorzecznowsci jezeli juz taki modul zostal stwprzony i bylo o nim wczesniej, chodzi o Attributes Wiard Pro. wszystko o czym piszesz i czego oczekujesz masz w tym jednym module, wystarczy zainstalowac wg zalaczonej instrucko i po klopocie.

kontynuowanie tego watku wydaje sie malo dorzeczne i do niczego nie prowadzi. jak narazie to tylko wypominki tego, czego nie udalo sie zrobic....
design4VIP z innej strony...

*

Podemski

  • Gość
Odp: dodawanie nowych nietypowych atrybutów
« Odpowiedź #26 dnia: Grudzień 25, 2012, 03:59:22 pm »
Ale AttributeWizardPro z tego co widzę nie rozwiązuje jego problemu. Nie ma tam funkcjonalności pozwalającej na wyliczanie ceny na podstawie podanej szerokości i wysokości produktu. Jeśli się mylę to mnie popraw i daj mi jakiś przykład, w demach i konfiguracji modułu nie widzę takiej możliwości.

Po za tym nie wiesz w jaki sposób ma być liczona cena, jaki jest wpływ szerokości na cenę, a jaki wysokości. Tego nie ustalisz z tego modułu.

Parę wskazówek:

1. Cenę liczysz w klasie Cart.php, powinny zainteresować Cię metody getProducts oraz getOrderTotal.
2. To nie prawda, że "wszystko presta trzyma w bazie". Modyfikacja ceny na końcowym etapie może być poprzedzona nadpisaniem poszczególnych danych bezpośrednio w obiekcie koszyka. Tak na dobrą sprawę możesz stworzyć atrybut szerokość, atrybut wysokość i operować na danych tych obiektów by otrzymać rzeczy jakie Cię interesują.


*

Offline zwora

  • Nowy
  • *
  • 19
  • 0
Odp: dodawanie nowych nietypowych atrybutów
« Odpowiedź #27 dnia: Grudzień 25, 2012, 07:56:03 pm »
do deejay3:
Od tego jest forum, żeby zadawać pytania. Ja nie tworzę posta, w którym chcę się pochwalić tym, co udało mi się wspaniałego zrobić, tylko po to, żeby ktoś poradził mi coś sensownego w kwestii problemu, z którym nie mogę sobie dać rady. Póki co, nikt nie udzielił mi wyczerpującej odpowiedzi i w sumie się tego nie mogę spodziewać, bo przecież większość specjalistów od presty chce na tym zarobić, więc nie mogą za darmo rozpowszechniać wiedzy, za którą mogą być wynagrodzeni. Moje pytanie dotyczy dość skomplikowanej rzeczy, a ja delikatnie mówiąc nie jestem ekspertem w dziedzinie prestashop ani nawet smarty. Znam się trochę na php, js, mysql, html i css (w takim zakresie, że mogę tworzyć aplikacje internetowe), ale sklep to zupełnie inna bajka, bo trzeba poznać dobrze jego strukturę, żeby móc dobrze w nim działać. Co do modułu z presto changeo to już dawno przeglądałem jego opis, ale podobnie jak Krystian Podemski wnioskuję, że nie spełni on moich oczekiwań. A wydawanie 150USD w ciemno zupełnie mi nie pasuje. Mogę to taniej zlecić na freelancer(dot)com, ale jak już pisałem chciałbym się nauczyć działania presty i mieć świadomość tego, co się tam dzieje. Jeśli Cię irytuje ten temat, to nikt Cię nie zmusza do jego przeglądania.

do Krystian Podemski:
A czy Twoim zdaniem zapisanie wymiarów w Customization (przepisanie ich z moich nowych pól do pól w Customization) i ukrycie całej zakładki Product customization, a następnie wyliczanie ceny za pomocą danych pobranych z tabeli ps_customized_data byłoby dobrym rozwiązaniem? Szukam teraz rozwiązania, które przysporzyłoby najmniej problemów. Muszę jeszcze brać pod uwagę to, że w moim sklepie mogę mieć też standardowe dla presty produkty (tzn. nie wymagające wprowadzania wymiarów). A Customization dotyczy konkretnych produktów, więc mogę wymiary początkowe pobierane po załadowaniu produktów traktować jako flagi (np. sprawdzać, czy wartość tych pól w bazie (wartość ustawiona wcześniej z back office) wynosi np. szer=1 i w takim przypadku nie ładować dodatkowych pól do wprowadzania wymiarów, a gdy wartość ta jest inna to te pola ładować). A może zamiast przepisywać dane z nowych pól do pól w Customization, przeniósłbym zawartość zakładki Product customization w inne miejsce w layoucie, dodałbym walidację tych pól i update wyświetlanej ceny produktu? Według mnie to mogłoby być dobre rozwiązanie, ale wolę spytać o radę kogoś bardziej doświadczonego.

*

Podemski

  • Gość
Odp: dodawanie nowych nietypowych atrybutów
« Odpowiedź #28 dnia: Grudzień 25, 2012, 08:19:44 pm »
Nie wiem w jaki sposób wyceniasz produkt, jeśli mnożnik dla każdego produktu z osobna jest inny to potrzebujesz dodatkowego pola lub właściwej cechy produktu, której wartość byś pobierał.

Oczywiście możesz użyć funkcjonalności, o której piszesz - spełni Twoje oczekiwania jeśli odpowiednio odbierzesz dane i zmodyfikujesz mechanizm naliczania ceny w koszyku. Dodatkowo masz zapewnione wyświetlanie tych pól czyli szerokość, wysokość już na samym starcie w całym systemie. Jedyne co zostaje Ci do zrobienia to wpływ na cenę końcową, oraz sposób na rozgraniczenie produktów "specjalnych" i "zwykłych" ale z tym nie powinno być problemu bo przecież wykryjesz czy istnieją jakieś pola "Customization" :)

*

Offline zwora

  • Nowy
  • *
  • 19
  • 0
Odp: dodawanie nowych nietypowych atrybutów
« Odpowiedź #29 dnia: Grudzień 26, 2012, 10:28:41 am »
Zacząłem to robić według ostatniego planu, ale coś mnie zatrzymało. Teraz mam dwa swoje pola tekstowe, w których onblur wywołuje mi walidację, update wyświetlanej ceny i przepisanie zawartości do odpowiedniego pola customization (które docelowo będzie ukryte). Ale teraz muszę jakoś połączyć funkcje przycisku Save na karcie Product customization i przycisku Add to cart. Próbowałem to zrobić na wiele sposobów, ale doszedłem do wniosku, że najprościej będzie dodać do mojej funkcji obsługującej onblur w nowych polach z wymiarami, dodatkowe wywołanie saveCustomization(). Ale wtedy musiałbym zablokować przeładowanie strony po submit customizationForm. I nie wiem gdzie to można zmienić (w którym pliku).