Strona główna forum Wsparcie Moduły i dodatki Fixed Quantity - zmienna cena za sztukę zależnie od ilości

Fixed Quantity - zmienna cena za sztukę zależnie od ilości

Wszystko o modułach i dodatkach dla Magento...


Posty: 77
Gadu-Gadu: 0

W sklepie idzie wybrać zdefiniowane nakłady ilościowe danego produktu np: 100szt, 500szt, (...), 100 000szt. Do tego celu wykorzystać można darmowy moduł "Fixed Quantity" dostępny w magentoconnect.

jednak jak dodać w panelu administracyjnym do opcji dodatkowych na karcie produktu coś w rodzaju widełek wyglądających np:
od 0 do 100szt:
Opcja dodatkowa - cena za sztukę ...

od 101 - 1000szt:
Opcja dodatkowa - cena za sztukę

itd...
Żeby w zależności od wpisanej ilości system przeliczył automatycznie ceny za opcje dodatkowe?

Fixed Quantity - zmienna cena za sztukę zależnie od ilości

PostTeraz jest 23 lis 2024, o 16:20
Google

Posty: 427
Lokalizacja: Internet


Posty: 28
Gadu-Gadu: 0

Też potrzebuję takiego moda, zacząłem nawet działać trochę w tym temacie i tak wygląda dotychczasowe starania:

1. W bazie danych w tabeli catalog_product_option dodaję dwie nowe kolumny - from_qty i to_qty korzystając z konsoli sql (najpierw zaznaczam tą tabelę):
ALTER TABLE  `catalog_product_option` ADD  `from_qty` INT( 10 ) DEFAULT  '0' AFTER  `sort_order` ;


i jeszcze druga kolumna:

ALTER TABLE  `catalog_product_option` ADD  `to_qty` INT( 10 ) DEFAULT  '0' AFTER  `from_qty` ;


OK tabele mamy gotowe, jeszcze z poziomu struktury tabeli catalog_product_option edytuję nowe kolumny ustawiając atrybut: unsigned, komentarz:from_qty i to_qty i odznaczam NULL.

Baza danych gotowa, teraz kod. Zaczynam od modyfikacji layout-u adminhtml:

Go to:
\www\magento\app\design\adminhtml\default\default\template\catalog\product\edit\options


Tutaj mam plik Option.phtml

Teraz wstawiam poniżej linii 43:
'<th class="opt-order"><?php echo Mage::helper('catalog')->__('Sort Order') ?></th>'+


następujący kod:
'<th class="opt-qty"><?php echo Mage::helper('catalog')->__('From Qty') ?><span class="required">*</span></th>'+
'<th class="opt-qty"><?php echo Mage::helper('catalog')->__('To Qty') ?><span class="required">*</span></th>'+


Następnie w tym samym pliku poniżej kodu około linii 55:
'<td><input type="text" class="validate-zero-or-greater input-text" name="<?php echo $this->getFieldName() ?>[{{id}}][sort_order]" value="{{sort_order}}"></td>'+


wstawiam ten kod:
'<td><input type="text" class="required-entry input-text" id="<?php echo $this->getFieldId() ?>_{{id}}_from_qty" name="<?php echo $this->getFieldName() ?>[{{id}}][from_qty]" value="{{from_qty}}"></td>'+
'<td><input type="text" class="required-entry input-text" id="<?php echo $this->getFieldId() ?>_{{id}}_to_qty" name="<?php echo $this->getFieldName() ?>[{{id}}][to_qty]" value="{{to_qty}}"></td>'+


Co zostało zrobione: dwie kolumny przetrzymujące przedział ilościowy - od ilości i do ilości, oraz zmodyfikowana została karta produktu, a dokładnie zakładka Custom Options - w której teraz podczas dodawania nowej opcji mamy możliwość zdefiniowania przedziału cenowego co ładnie nam się zapisuje do bazy.

W tym momencie funkcjonalność modyfikacji pozwala na zapisanie do bazy wartości from_qty i to_qty, ale jeszcze ich nie wyświetla.

Aby to naprawić, Go to:
\www\magento\app\code\core\Mage\Adminhtml\Block\Catalog\Product\Edit\Tab\Options


Otwieram plik Option.php

Pod linią 238:
$value['sort_order'] = $option->getSortOrder();


Dodajemy kod:
$value['from_qty'] = $option->getFromQty();
$value['to_qty'] = $option->getToQty();


Teraz w panelu w zakładce Custom Options edycji produktu ładnie wyświetlają się widełki od ilości i do ilości.

No i teraz co dalej?
Fundament jest, trzeba go zastosować do frontend-u...

jemoon Avatar użytkownika
Administrator

Posty: 529
Lokalizacja: Gdańsk
Gadu-Gadu: 0

witam,
@seo9 Niestety takie 'skrótowe' rozwiązania nie pozwolą Ci nigdy na aktualizację Magento...


Posty: 28
Gadu-Gadu: 0

jemoon dzięki za info, może masz jakieś sugestie, lub lepszą propozycję, chciałbym jednak móc aktualizować serwis, przy jednoczesnym definiowaniu przedziałów cenowych względem ilość dla opcji dodatkowych.

jemoon Avatar użytkownika
Administrator

Posty: 529
Lokalizacja: Gdańsk
Gadu-Gadu: 0

witam,
Należy zatem stworzyć moduł do tego lub jeżeli się uda zmiany przenieść do przestrzeni app/code/local - niestety w Twoim przypadku (gdzie musisz dokonać zmian w templatkach adminowych, które nie wspierają natywnie Magentowego modelu fallback'owego) musisz swoje zmiany zamieścić we własnej przestrzeni nazw a app/code/local jako osobny moduł.

P.S
Nie najlepszym pomysłem jeż też dodawanie kolumn do magentowych tabel - lepiej utworzyć własne tabele za pomocą instalatorów, które również możesz zamieścić w plikach swojego modułu.


Posty: 28
Gadu-Gadu: 0

jemoon dzięki za nakierowanie na odpowiedni tor, czyli nie będzie to modyfikacja tylko nowy moduł.

Nie zmienia to faktu, że nie mogę nigdzie znaleźć dobrego punktu zaczepienia do zaprojektowania tego, pewnie jeszcze za słabo znam Magento, a i z PHP nie jestem omnibusem.

Od kilku ładnych dni siedzę nad tym tematem, a w głowie ciągle pustka.

Nasunęła mi się pewna logistyka, tylko nie wiem czy to dobry pomysł i czy da się zrobić z tego moduł.

Jeszcze ku woli formalności działam na Magento 1.6.1.0 z zainstalowanym darmowym modułem Fixed Quantity.

Fixed Quantity pozwala na definiowanie w karcie tworzenia produktów gotowych pakietów ilościowych wybieranych na stronie produktów za pomocą radiobuton-ów.

Mój pomysł na moduł jest taki, żeby w karcie produktów była dodatkowa zakładka w której można by przypisać do poszczególnych nakładów ilościowych z FQ poszczególne opcje z różnymi cenami za opcję. Coś jak menu wielokrotnego wyboru.
nakład 100szt:
opcja1
opcja2
opcja3
opcja4
opcja5
nakład 200szt:
opcja1
opcja2
opcja3
opcja4
opcja5

Gdzie opcja1 jest tak sama jak opcja3, a opcja2 taka sama jak opcja4 - różnią się tylko cenami za sztukę (no i oczywiście id).

Tylko teraz, żeby to działało dynamicznie we frontend trzeba by było skorzystać chyba z ajax.

Pytania:
- czy to w ogóle dobry pomysł na rozwiązanie?
- od czego zacząć tworzenie takiego modułu?
- czy korzystać z ajax, żeby to działało dynamicznie?
- czy w bazie danych trzeba tworzyć jakiś powiązania - jeśli tak to jakie i jak?


Powrót do Moduły i dodatki