W Comarch e-Sklep udostępniliśmy do Państwa dyspozycji Akcje – są to działania na stronie związane z interakcją użytkownika (kupującego jak i zarządzającego sklepem), takie jak np. dokonywanie zakupów, dodawanie produktów do koszyka czy zmiana waluty.
Lista dostępnych akcji znajduje się w Panelu Administracyjnym sklepu w następującej ścieżce: Panel administracyjny/Wygląd sklepu/Dokumentacja.
Związane z Klientem
Akcje te możemy określić jako powiązane z Klientem i jego działaniami na stronie. W skład tych akcji wchodzą:
Akcja odpowiada za zmianę firmy. Zawiera jedno pole – Id – jest to pole obowiązkowe, typu int.
0 1 2 3 4 5 |
<form action="{{ page.Url }}{{ page.QueryString | H }}" method="post"> <input type="hidden" name="__action" value="Customer/CompanyChange"/> <input type="hidden" name="id" value=""/> </form> |
Akcja odpowiada za wczytanie domyślnych ustawień firmy. Zawiera jedno pole – Id – jest to pole obowiązkowe, typu int.
0 1 2 3 4 5 |
<form action="{{ page.Url }}{{ page.QueryString | H }}" method="post"> <input type="hidden" name="__action" value="Customer/CompanyDefaultUpdate"/> <input type="hidden" name="id" value=""/> </form> |
Akcja odpowiadająca za akceptację zgody, na przykład podczas składania zamówienia. Zawiera następujące pola:
- tos – pole może przyjąć typ int lub pozostać puste
- channelKey – pole typu string
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
{% for tos in customer-profile.Consents -%} {% if tos.Checked == false -%} <div class="form-lq tos-ui"> <div class="tos-name-ui">{{ tos.Text }}</div> {% assign channelsSize = tos.Channels | Size -%} {% if channelsSize > 0 -%} {% for channel in tos.Channels -%} <div class="channel-ui"> <button class="agreements-in-profile-lq" data-action="Customer/ConsentAccept" data-key="{{ channel.Key }}">{{translations.Accept}}</button> <span class="channel-name-ui">{{channel.Name}}</span> </div> {% endfor -%} {% else -%} <div class="date-container-ui"> <button class="agreements-in-profile-lq tos-lq" data-action="Customer/ConsentAccept" data-key="{{ tos.Id }}">{{translations.AcceptAgreement}}</button> </div> {% endif -%} </div> {% endif -%} {% endfor -%} |
Akcja odpowiadająca za akceptację zgody obowiązkowej podczas logowania. Zawiera następujące pola:
- tos – przyjmuje wartość int[] – dane pole może zostać przekazane wielokrotnie w ramach jednej akcji, wartość int
- channelKey pole typu string[] – dane pole może zostać przekazane wielokrotnie w ramach jednej akcji
0 1 2 3 4 5 6 7 8 9 10 |
<form method="POST"> <input type="hidden" name="__action" value="Customer/ConsentsLoginAccept"/> {% for tos in __consents -%} {% if tos.Required and tos.Statement == false -%} {% assign requiredExists = true -%} {% break -%} {% endif -%} {% endfor -%} </form> |
Akcja odpowiada za wycofanie zgody. Zawiera następujące pola:
- tos – pole to może przyjąć wartość int lub pozostać puste
- channelKey – pole typu string
0 1 2 |
<form method="POST"> |
Akcja odpowiada za zmianę waluty. Zawiera jedno pole – currency. Jest to pole obowiązkowe.
0 1 2 3 4 5 6 7 8 9 10 11 |
<form method="post"> <select name="currency" required> {% for currency in config.Currencies -%} <option value="{{ currency.Code }}">{{ currency.Code }}</option> {% endfor -%} </select> <button type="submit">Zmień</button> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" required /> <input type="hidden" name="__action" value="Customer/CurrencyChange" required /> </form> |
Akcja odpowiada za dodanie adresu do dostawy. Formularz zawiera następujące pola:
- addressId – pole to może przyjąć wartość int lub pozostać puste
- default – pole to przyjmuje wartość bool (true/false)
- name – pole obowiązkowe, maksymalna długość tego pola to 64 znaków
- name2 – maksymalna długość tego pola to 64 znaków
- name3 – maksymalna długość tego pola to 250 znaków
- street – maksymalna długość tego pola to 150 znaków
- streetNo – maksymalna długość tego pola to 20 znaków
- unitNo – maksymalna długość tego pola to 20 znaków
- zipCode – pole wymagane, maksymalna długość tego pola to 20 znaków
- city – maksymalna długość tego pola to 50 znaków
- countryCode – pole obowiązkowe, maksymalna długość to 2 znaki
- state – maksymalna długość tego pola to 50 znaków
- phoneNo – maksymalna długość tego pola to 50 znaków
0 1 2 3 4 5 6 7 8 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Customer/DeliveryAddressAdd" /> <input type="hidden" name="__template" value="customer/profile-data.html" /> {% include 'customer/profile-data-address.html' %} <button>Zatwierdź</button> </form> |
Umożliwia usunięcie adresu dostawy.
Zawiera jedno pole – addressId – jest to pole obowiązkowe typu int.
0 1 2 3 4 5 6 7 |
{% assign address = customer.DeliveryAddresses[0] -%} <form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Customer/DeliveryAddressDelete" /> <input type="hidden" name="addressId" value="{{ address.Id }}" /> </form> |
Umożliwia edycję adresu.
Akcja ta posiada następujące pola:
- addressId – pole może przyjąć typ int lub pozostać puste
- default – pole przyjmuje wartość bool (true/false)
- name – pole obowiązkowe, maksymalna długość tego pola to 64 znaków
- name2 – maksymalna długość tego pola to 64 znaków
- name3 – maksymalna długość tego pola to 250 znaków
- countryCode – pole obowiązkowe, maksymalna długość to 2 znaki
- zipCode – maksymalna długość tego pola to 20 znaków
- city – maksymalna długość tego pola to 50 znaków
- street – maksymalna długość tego pola to 150 znaków
- streetNo – maksymalna długość tego pola to 20 znaków
- unitNo – maksymalna długość tego pola to 20 znaków
- state – maksymalna długość tego pola to 50 znaków
- phoneNo – maksymalna długość tego pola to 50 znaków
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Customer/DeliveryAddressUpdate" /> <input type="hidden" name="__template" value="customer/profile-data.html" /> <input type="hidden" name="addressId" value="{{ address.Id }}" /> {% if address.Default %} <input type="hidden" name="default" value="1" /> {% endif %} <div> {% if address.Street == "" %} {% include 'customer/profile-data-address.html' with -1 %} {% else %} {% include 'customer/profile-data-address-pr.html' with address.Id %} {% endif %} </div> <button>Zatwierdź</button> {% if address.Default == false %} <button data-id="{{ address.Id }}">{{ translations.Cst_RemoveDeliveryAddress}}</button> {% endif %} {% if address.Default == false %} <button>Zatwierdź</button> {% endif %} </form> |
Akcja odpowiadająca zmianie adresu e-mail. Przyjmuje następujące pola:
- email – pole obowiązkowe,wyrażenie regularne, maksymalna długość to 192 znaki
- emailRepeat – pole obowiązkowe,wyrażenie regularne, maksymalna długość to 192 znaki
- password – pole obowiązkowe
W przypadku wersji enterprise występuje pole doNotChangeCompanyEmail – jest to pole wartości bool (true/false).
0 1 2 3 4 5 6 7 8 9 10 11 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Customer/EmailChange" /> <input type="hidden" name="__template" value="customer/profile-account.html" /> <input type="email" name="email" placeholder="* {{ translations.Prf_NewEmail }}" required /> <input type="email" name="emailRepeat" placeholder="* {{ translations.Prf_RepeatEmail }}" required /> <input type="password" name="password" placeholder="* {{ translations.Com_Password }}" required /> <button>Zmień</button> </form> |
Posiada jedno pole – email. Jest to pole wymagane,wyrażenie regularne, maksymalna długość to 192 znaki.
0 1 2 3 4 5 6 7 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}"/> <input type="hidden" name="__action" value="Customer/EmployeeAdd" /> <input type="email" name="email" placeholder="" required /> <button>Zatwierdź</button> </form> |
Akcja odpowiada za usunięcie pracownika.
Posiada jedno pole – id. Jest to pole wymagane, typu int.
0 1 2 3 4 5 6 7 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}"/> <input type="hidden" name="__action" value="Customer/EmployeeDelete" /> <input type="number" name="id" placeholder="" required /> <button>Zatwierdź</button> </form> |
EmployeeLock
Akcja odpowiada za zablokowanie pracownika. Posiada pole id – pole wymagane typu int.
0 1 2 3 4 5 6 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}"/> <input type="hidden" name="__action" value="Customer/EmployeeLock" /> <input type="number" name="id" placeholder="" required /> <button>Zatwierdź</button> </form> |
EmployeeUnock
Akcja odpowiada za odblokowanie pracownika. Posiada pole id – pole wymagane typu int.
0 1 2 3 4 5 6 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}"/> <input type="hidden" name="__action" value="Customer/EmployeeUnock" /> <input type="number" name="id" placeholder="" required /> <button>Zatwierdź</button> </form> |
Akcja ta odpowiada za aktualizację danych pracowników w profilu. Zawiera następujące pola:
- name – maksymalna długość tego pola to 50 znaków
- name2 – maksymalna długość tego pola to 50 znaków
- phoneNo – maksymalna długość tego pola to 50 znaków
- languageId – pole to może przyjąć typ int lub pozostać puste
0 1 2 3 4 5 6 7 8 9 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}"/> <input type="hidden" name="__action" value="Customer/EmployeeUpdate" /> <input type="text" name="name" placeholder=" "/> <input type="text" name="name2" placeholder=" " /> <input type="tel" name="phoneNo" placeholder=" " /> <button>Zatwierdź</button> </form> |
Posiada jedno pole – languageId – jest to pole wymagane typu short.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 |
{% assign lngCount = config.Languages | Size -%} {% if lngCount > 1 -%} <form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Customer/LanguageChange" /> <select name="languageId"> {% for lng in config.Languages -%} <option value="{{ lng.Id }}" {% if page.LanguageId == lng.Id -%} selected {% endif -%}>{{ lng.Name }}</option> {% endfor -%} </select> {% endif -%} </form> |
Posiada jedno pole – languageId – jest to pole wymagane typu short.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 |
{% assign lngCount = config.Languages | Size -%} {% if lngCount > 1 -%} <form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Customer/LanguageDefaultUpdate" /> <select name="languageId"> {% for lng in config.Languages -%} <option value="{{ lng.Id }}" {% if page.LanguageId == lng.Id -%} selected {% endif -%}>{{ lng.Name }}</option> {% endfor -%} </select> {% endif -%} </form> |
Akcja odpowiadająca za logowanie. Zawiera następujące pola:
- email – pole wymagane,wyrażenie regularne, maksymalna długość tego pola to 192 znaki
- password – pole wymagane
- remember – pole typu bool (true/false)
0 1 2 3 4 5 6 7 8 9 10 11 12 |
<form method="POST"> <input type="hidden" name="__action" value="Customer/Login" /> <input type="email" name="email" value="{{ customer.Email }}" {% if customer.Email == blank %} placeholder="* {{ translations.Com_EmailAddress }} " {% endif %} required autofocus /> <input type="password" name="password" placeholder="* {{ translations.Com_Password }}" required /> <a href="{{ config.DefinedPages.PasswordReminder.Url }}" class="remind">{{ translations.Lgn_DontRememberPassword }}</a> <button>Login</button> </form> |
Akcja ta odpowiada za wylogowanie zalogowanego użytkownika (Klienta).
0 1 2 3 4 5 6 |
<form action="{{ page.Url }}{{ page.QueryString | H}}" method="post"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Customer/Logout" /> <button>Wyloguj</button> </form> |
Akcja odpowiada za zmianę hasła, zawiera trzy pola, są to:
- oldPassword – pole wymagane
- password – pole wymagane
- passwordRepeat – pole wymagane
0 1 2 3 4 5 6 7 8 9 |
<form method="POST"> <input type="hidden" name="__action" value="Customer/OldPasswordChange" /> <input type="hidden" name="__template" value="customer/profile-account.html" /> <input type="password" name="oldPassword" placeholder="" required /> <input type="password" name="password" placeholder=" " required /> <input type="password" name="passwordRepeat" placeholder=" " required /> <button>Zatwierdź</button> </form> |
Akcja odpowiadająca za zmianę hasła (np. przy pomocy formularza ,,zapomniałem hasła”). Pola jakie przyjmuje to:
- password – pole wymagane
- passwordRepeat – pole wymagane
- hash – pole wymagane
0 1 2 3 4 5 6 7 8 9 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Customer/PasswordChange" /> <input type="hidden" name="hash" value="{{ page.GET['hash'] }}" > <input type="password" name="password" value="" required/> <input type="password" name="passwordRepeat" value="" required/> <button>Zatwierdź</button> </form> |
Akcja której zadaniem jest odzyskanie hasła. Zawiera jedno pole email – pole wymagane,wyrażenie regularne, maksymalna długość to 192 znaki.
0 1 2 3 4 5 6 7 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Customer/PasswordRecover" /> <input type="email" name="email" value="{{ customer.Email }}" required/> <button>Zatwierdź</button> </form> |
Akcja ta odpowiada za rejestrację użytkownika, zawiera następujące pola:
- company – pole przyjmuje wartość bool (true/false)
- email – pole wymagane,wyrażenie regularne, maksymalna długość to 192 znaki
- password – pole wymagane
- passwordRepeat – pole typu string
- phoneNo – maksymalna długość to 50 znaków
- name – maksymalna długość to 64 znaków
- name2 – maksymalna długość to 64 znaków
- name3 – maksymalna długość to 250 znaków
- countryCode – maksymalna długość to 2 znaki
- zipCode – maksymalna długość to 20 znaków
- city – maksymalna długość pola to 50 znaków
- street – maksymalna długość pola to 150 znaków
- streetNo – maksymalna długość pola to 20 znaków
- unitNo – masymalna długość pola to 20 znaków
- state – maksymalna długość pola to 50 znaków
- tin – makymalna długość pola to 20 znaków
- ssn – maksymalna długość pola to 20 znaków
- tos – przyjmuje wartość int[] – dane pole może zostać przekazane wielokrotnie w ramach jednej akcji, wartość int
- channelKey – pole typu string[] – dane pole może zostać przekazane wielokrotnie w ramach jednej akcji
Dodatkowo, dla wersji enterprise dostępne jest pole vateu – maksymalna długość tego pola to 2 znaki. Odpowiada za dodanie nicku dla użytkownika który dodaje opinie o produkcie. Akcja ta zawiera jedno pole – author. Jest to pole obowiązkowe, jego maksymalna długość to 50 znaków. Akcja odpowiadająca za zmianę danych konta. Zawiera następujące pola: Dodatkowo, dla wersji enterprise przewidziano pola: Akcje w tej grupie dotyczą składanych zamówień. Umożliwia akceptację zamówienia w sytuacji, gdy mamy do czynienia z np. negocjowalnym kosztem transportu. Zawiera następujące pola: Odpowiada za dodanie zamówienia. Zawiera następujące pola: Akcja ta odpowiada za anulowanie zamówienia. Zawiera następujące pola: Akcja odpowiada za dodawanie załącznika do zamówienia. Zawiera jedno pole file – pole dla wczytywanych plików. Akcja odpowiada za usuwanie załącznika do zamówienia. Zawiera jedno pole id – pole wymagane. Akcja odpowiada za ustawienie atrybutów zamówienia. Zawiera jedno pole attribute – typu string[] – dane pole może zostać przekazane wielokrotnie w ramach jednej akcji, maksymalna długość to 1000 znaków. Akcja odpowiada za dodanie reklamacji. Akcja ta posiada następujące pola:
Dotyczące zamówienia
Akcja odpowiedzialna za zmianę nabywcy. Posiada pole buyer – pole typu boolean.
Akcja odpowiedzialna za aktualizację danych nabywcy. Posiada następujace pola:
- name – pole wymagane typu string. Maksymalna długość na pola to 64 znaki
- name2 – pole typu string. Maksymalna długość na pola to 64 znaki
- name3 – pole typu string. Maksymalna długość na pola to 250 znaków
- countryCode – pole wymagane typu string. Maksymalna długość na pola to 2 znaki
- zipCode – pole typu string. Maksymalna długość na pola to 20 znaków
- city – pole typu string. Maksymalna długość na pola to 50 znaków
- street – pole typu string. Maksymalna długość na pola to 150 znaków
- streetNo – pole typu string. Maksymalna długość na pola to 20 znaków
- unitNo – pole typu string. Maksymalna długość na pola to 20 znaków
- state – pole typu string. Maksymalna długość na pola to 50 znaków
- phoneNo – pole typu string. Maksymalna długość na pola to 50 znaków
- vateu – pole typu string. Maksymalna długość na pola to 2 znaki
- tin – pole typu string
- ssn – pole typu string. Maksymalna długość na pola to 20 znaków
- invoice – pole typu boolean
- company – pole typu boolean
0 1 2 3 4 5 6 7 8 9 10 11 12 |
<form method="POST"> <input type="email" name="email" value="{% if cart.Customer.Email != "" -%}{{ cart.Customer.Email }}{% else -%}{{ customer.Email }}{% endif -%}" required/> <input type="text" name="name" value="{% if customerDeliveryAddress.Name != "" -%}{{ customerDeliveryAddress.Name | H }}{% else -%}{{ customerAddress.Name | H }}{% endif -%}" required/> <input type="text" name="street" value="{% if customerDeliveryAddress.Street != "" -%}{{ customerDeliveryAddress.Street | H }}{% else -%}{{ customerAddress.Street | H }}{% endif -%}" required/> <input type="text" name="streetNo" value="{% if customerDeliveryAddress.StreetNo != "" -%}{{ customerDeliveryAddress.StreetNo }}{% else -%}{{ customerAddress.StreetNo }}{% endif -%}" required/> <input type="text" name="unitNo" value="{% if customerDeliveryAddress.UnitNo != "" -%}{{ customerDeliveryAddress.UnitNo }}{% else -%}{{ customerAddress.UnitNo }}{% endif -%}"/> <input type="text" name="zipCode" value="{% if customerDeliveryAddress.ZipCode != "" -%}{{ customerDeliveryAddress.ZipCode }}{% else -%}{{ customerAddress.ZipCode }}{% endif -%}" required/> <input type="text" name="city" value="{% if customerDeliveryAddress.City != "" -%}{{ customerDeliveryAddress.City | H }}{% else -%}{{ customerAddress.City | H }}{% endif -%}" required/> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Order/DeliveryAddressUpdate" /> </form> |
Posiada jedno pole complaintId – jest to pole wymagane, typu int.
0 1 2 3 4 5 6 7 |
<form method="POST"> <input type="hidden" name="complaintId" value="{{ complaint.ComplaintId }}"/> <input type="hidden" name="__action" value="Order/ComplaintCancel" /> <input type="hidden" name="__CSRF" value="{{page.CSRF}}"/> <button>Zatwierdź</button> </form> |
Akcja odpowiadająca za kopiowanie zamówienia. Zawiera następujące pola:
- orderId – pole wymagane, pole typu int
- hash – pole typu string.
Akcja pozwalająca na dodanie kuponu. Zawiera następujące pola:
- code – pole wymagane, maksymalna długość tego pola to 40 znaków
- email – wyrażenie regularne, maksymalna długośc tego pola to 192 znaki
0 1 2 3 4 5 6 7 8 |
<form method="POST"> <input type="text" name="code" value="{{cart.Coupon}}" /> <input type="text" name="email" id="voucher-email" placeholder="{{translations.Crt_EnterTheEmail}}" value="{{cart.Customer.Email}}"/> <span class="cs-validation" data-field="email" data-validator="required">{{translations.Crt_DiscountCodeExecutionErrEmail}}</span> <input type="hidden" name="__CSRF" value="{{page.CSRF}}"/> <input type="hidden" name="__action" value="Order/CouponAdd" /> </form> |
Akcja umożliwiająca usunięcie kuponu.
0 1 2 3 4 5 6 7 |
<form> <button type="submit">Zatwierdź</button> <p>{{cart.Coupon}}</p> <input type="hidden" name="__CSRF" value="{{page.CSRF}}"/> <input type="hidden" name="__action" value="Order/CouponDelete" /> </form> |
Posiada następujące pola:
- email – pole obowiązkowe,wyrażenie regularne, maksymalna długość to 192 znaki
- name – pole obowiązkowe, maksymalna długość tego pola to 64 znaków
- name2 – maksymalna długość tego pola to 64 znaków
- name3 – maksymalna długość tego pola to 250 znaków
- zipCode – maksymalna długość tego pola to 20 znaków
- city – maksymalna długość tego pola to 50 znaków
- street – maksymalna długość tego pola to 150 znaków
- streetNo – maksymalna długość tego pola to 20 znaków
- unitNo – maksymalna długość tego pola to 20 znaków
- state – maksymalna długość tego pola to 50 znaków
- phoneNo – maksymalna długość tego pola to 50 znaków
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<form method="POST"> <input type="email" name="email" value="{% if cart.Customer.Email != "" -%}{{ cart.Customer.Email }}{% else -%}{{ customer.Email }}{% endif -%}" required/> <input type="text" name="name" value="{% if customerDeliveryAddress.Name != "" -%}{{ customerDeliveryAddress.Name | H }}{% else -%}{{ customerAddress.Name | H }}{% endif -%}" required/> <input type="text" name="name2" value="{% if customerDeliveryAddress.Name != "" -%}{{ customerDeliveryAddress.Name2 | H }}{% else -%}{{ customerAddress.Name2 | H }}{% endif -%}"/> <input type="text" name="name3" value="{% if customerDeliveryAddress.Name != "" -%}{{ customerDeliveryAddress.Name3 | H }}{% else -%}{{ customerAddress.Name3 | H }}{% endif -%}"/> <input type="text" name="street" value="{% if customerDeliveryAddress.Street != "" -%}{{ customerDeliveryAddress.Street | H }}{% else -%}{{ customerAddress.Street | H }}{% endif -%}" required/> <input type="text" name="streetNo" value="{% if customerDeliveryAddress.StreetNo != "" -%}{{ customerDeliveryAddress.StreetNo }}{% else -%}{{ customerAddress.StreetNo }}{% endif -%}" required/> <input type="text" name="unitNo" value="{% if customerDeliveryAddress.UnitNo != "" -%}{{ customerDeliveryAddress.UnitNo }}{% else -%}{{ customerAddress.UnitNo }}{% endif -%}"/> <input type="text" name="zipCode" value="{% if customerDeliveryAddress.ZipCode != "" -%}{{ customerDeliveryAddress.ZipCode }}{% else -%}{{ customerAddress.ZipCode }}{% endif -%}" required/> <input type="text" name="city" value="{% if customerDeliveryAddress.City != "" -%}{{ customerDeliveryAddress.City | H }}{% else -%}{{ customerAddress.City | H }}{% endif -%}" required/> <input type="text" name="countryCode" value="{{ config.Countries[customerDeliveryAddress.Country].Name }}" readonly/> <input type="tel" name="phoneNo" value="{% if customerDeliveryAddress.PhoneNo != "" -%}{{ customerDeliveryAddress.PhoneNo }}{% else -%}{{ customerAddress.PhoneNo }}{% endif -%}" {% if cart.SelectedDelivery.PhoneRequired -%} required {% endif -%}/> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Order/DeliveryAddressUpdate" /> </form> |
Akcja odpowiedzialna za zmianę metody dostawy towaru. Zawiera następujące pola:
- id – pole wymagane, pole typu int
- channel – pole typu string
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
<form id="DeliveryMethodsAndPayment"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Order/DeliveryChange" /> <input type="hidden" name="__template" value="partials/cart/cart-template.html" /> <input name="id" type="hidden" id="deliveryId" /> <div class="delivery-methods"> <div class="options-title">{{ translations.Crt_DeliveryOptions }}:</div> {% assign i = 1 -%} {% assign manyIndex = 0 -%} {% for deliveryMethod in cart.DeliveryMethods -%} {% assign index = forloop.index -%} {% if deliveryMethod.Name == cart.DeliveryMethods[index].Name and deliveryMethod.Name != old -%} {% assign manyIndex = manyIndex | Plus: 1 -%} {% endif %} <div class="delivery-method-container {% if deliveryMethod.Name == old -%} hidden {% endif -%}"> <input id="delivery-method-input{{ i }}" type="radio" name="delivery" value="{{ i }}" {% if deliveryMethod.Name == cart.SelectedDelivery.Name and deliveryMethod.Name != old %} checked {% endif %}> <label for="delivery-method-input{{ i }}" {% if deliveryMethod.Name == cart.DeliveryMethods[index].Name -%} class="many" data-many="{{ manyIndex }}" {% endif -%}> <div class="option-name">{{ deliveryMethod.Name }}</div> {% if cart.NotDeterminedDeliveryCost == false %} {% if deliveryMethod.Name == cart.SelectedDelivery.Name %} <div class="option-price">{{ cart.SelectedDelivery.TotalValue | ToPrice }} {{ currency }}</div> {% else %} <div class="option-price">{{ deliveryMethod.TotalValue | ToPrice }} {{ currency }}</div> {% endif %} {% endif %} {% if delivery.DateText != "" %} <div class="option-date">{{ deliveryMethod.DateText }}</div> {% endif %} </label> {% assign i = i | Plus: 1 -%} </div> {% assign old = deliveryMethod.Name -%} {% endfor -%} </div> <div class="payment"> <input name="selected-delivery-value" type="hidden" value="{{ cart.SelectedDelivery.TotalValue | ToPrice }} {{ currency }}" /> <div class="options-title">{{ translations.Crt_PaymentOptions }}:</div> {% assign j = 1 -%} {% assign k = 1 -%} {% assign found = false -%} {% assign manyIndexLvl = 0 -%} {% for deliveryMethodLvl in cart.DeliveryMethods -%} {% assign indexLvl = forloop.index -%} {% if deliveryMethodLvl.Name == cart.DeliveryMethods[indexLvl].Name and deliveryMethodLvl.Name != oldLvl -%} {% assign manyIndexLvl = manyIndexLvl | Plus: 1 -%} {% endif %} <div class="delivery-method-payments delivery-method-payment{{ j }} {% if deliveryMethodLvl.Name != cart.SelectedDelivery.Name %} hidden {% endif %} {% if deliveryMethodLvl.Name == cart.DeliveryMethods[indexLvl].Name or deliveryMethodLvl.Name == oldLvl -%} many{{ manyIndexLvl }} {% endif -%}"> {% for payment in deliveryMethodLvl.Payments -%} <div class="payment-container"> <input id="payment-input{{ k }}" type="radio" name="paymentId{{ j }}" value="{{ payment.Id }}" {% if payment.Id == cart.SelectedDelivery.Payment.Id %} checked {% endif %}> <label for="payment-input{{ k }}"> <div class="option-name">{{ payment.Name }}</div> {% if cart.NotDeterminedDeliveryCost == false %} <div class="option-price"> {{ payment.TotalValue | ToPrice }} {{ currency }} {% if deliveryMethodLvl.FreeDeliveryFrom > 0 -%}<span class="free-delivery-price">({{ translations.Crt_FreeDeliveryFrom }}: {{ deliveryMethodLvl.FreeDeliveryFrom | ToPrice }} {{ customer.Currency }})</span>{% endif -%} </div> {% endif %} {% if payment.DueDateText != "" %} <div class="option-date">{{ translations.Crt_PaymentTime }}: {{ payment.DueDateText }}</div> {% endif %} </label> {% assign k = k | Plus: 1 -%} </div> {% endfor -%} {% assign j = j | Plus: 1 -%} </div> {% assign oldLvl = deliveryMethodLvl.Name -%} {% endfor -%} </div> </form> |
Pozwala na wybranie miejsca odbioru paczki (np. przy korzystaniu z paczkomatów). Zawiera następujące pola:
- id – pole wymagane, pole typu string
- data – pole typu string
0 1 2 3 4 5 6 7 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Order/DeliveryCollectionPointChange" /> <input type="checkbox" name="invoice" placeholder=" " /> <button>Zatwierdź</button> </form> |
Akcja odpowiedzialna za zmianę kraju dostawy. Posiada jedno pole – countryCode.
0 1 2 3 4 5 6 7 8 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Order/DeliveryCountryChange" /> <select name="countryCode"> <option value="{{ country.ISOCode }}">{{ config.Countries[country.ISOCode].Name }}</option> </select> </form> |
Akcja odpowiada za zmianę terminu dostawy. Zawiera jedno pole date – wyrażenie regularne, typu string.
0 1 2 3 4 5 6 7 8 9 10 |
<label class="mt20-ui labeui">{{ translations.ScheduledDeliveryDate }}</label> <div class="form-lq delivery-date-change-form-lq"> <input type="hidden" name="__action" value="Order/DeliveryDateChange" /> <input type="{{type}}" name="date" min="{{minDate}}" max="{{maxDate}}" value="{{dateValue}}" /> </div> {% elseif order.SelectedDelivery.DateText != "" -%} <label class="mt20ui labelui">{{ translations.ScheduledDeliveryDate }}</label> {{ order.SelectedDelivery.DateText }} {% endif -%} |
Akcja odpowiada za ustawienie adresu email. Zawiera jedno pole email – pole wymagane, wyrażenie regularne, maksymalna długość to 192 znaki.
0 1 2 3 4 5 6 7 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Order/EmailSet" /> <input id="email" type="text" name="email" /> <button>Zatwierdź</button> </form> |
Akcja ta odpowiada za zmianę danych faktury. Zawiera następujące pola:
- name – pole obowiązkowe, maksymalna długość dla tego pola wynosi 64 znaków
- name2 – maksymalna długość tego pola wynosi 64 znaków
- name3 – maksymalna długość tego pola wynosi 250 znaków
- countryCode – pole obowiązkowe, maksymalna długość tego pola to dwa znaki
- zipCode – maksymalna długość tego pola wynosi 20 znaków
- city – maksymalna długość tego pola wynosi 50 znaków
- street – maksymalna długość tego pola wynosi 150 znaków
- streetNo – maksymalna długość tego pola wynosi 20 znaków
- unitNo – maksymalna długość tego pola wynosi 20 znaków
- state – maksymalna długość tego pola wynosi 50 znaków
- phoneNo – maksymalna długość dla tego pola wynosi 50 znaków
- tin – pole typu string
- ssn – maksymalna długość tego pola wynosi 20 znaków
- invoice – pole przyjmuje wartość bool (true/false)
- company – pole przyjmuje wartość bool (true/false)
Dla wersji Enterprise dodatkowo występuje pole vateu – długość tego pola wynosi maksymalnie 2 znaki.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<form id="invoice-address-data"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Order/InvoiceAddressUpdate" /> <input type="hidden" name="company-or-not" value="{% if customer.Company -%}company{% endif -%}" /> <input type="checkbox" name="invoice" {% if cart.Customer.Invoice == true -%}checked{% endif -%}/> <input id="company" type="checkbox" name="company" {% if cart.Customer.Company -%} checked {% endif -%} /> <input type="hidden" name="company-change" /> <input type="text" name="tin" value="{{ cart.Customer.TIN }}" {% if cart.Customer.Company == false -%} class="hidden" required {% endif -%}/> <input type="text" name="name" value="{{ cart.Customer.InvoiceAddress.Name | H }}" required/> <input type="text" name="street" value="{{ cart.Customer.InvoiceAddress.Street | H }}" required/> <input type="text" name="streetNo" value="{{ cart.Customer.InvoiceAddress.StreetNo }}" required/> <input type="text" name="unitNo" value="{{ cart.Customer.InvoiceAddress.UnitNo }}"/> <input type="text" name="zipCode" value="{{ cart.Customer.InvoiceAddress.ZipCode }}" required/> <input type="text" name="city" value="{{ cart.Customer.InvoiceAddress.City | H }}" required/> <input type="hidden" name="countryCode" value="{{ country.ISOCode }}" required/> <select id="select-country"> {% for country in config.Countries -%} {% if country.ISOCode == customerDeliveryAddress.Country -%} <option selected="selected" name="countryCode" value="{{ country.ISOCode }}">{{ config.Countries[country.ISOCode].Name }}</option> {% else -%} <option name="countryCode" value="{{ country.ISOCode }}">{{ config.Countries[country.ISOCode].Name }} </option> {% endif -%} {% endfor -%} </select> <button>Zatwierdź</button> </form> |
Akcja odpowiada za wybranie opcji wystawienia faktury. Posiada jedno pole invoice – typu bool (true/false).
0 1 2 3 4 5 6 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Order/InvoiceChange" /> <input type="checkbox" name="invoice"/> </form> |
Akcja odpowiada za dodanie wiadomości do zamówienia. Posiada jedno pole note – jego maksymalna długość to 500 znaków.
0 1 2 3 4 5 6 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Order/NoteAdd" /> <textarea name="note"></textarea> </form> |
Akcja odpowiada za dokonywanie płatności. Zawiera następujące pola:
- id – pole wymagane, pole typu int
- hash – pole wymagane, pole typu string.
0 1 2 3 4 5 6 7 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Order/PaymentMake" /> <input type="hidden" name="id" value="{{ order.Id }}" /> <input type="hidden" name="hash" value="{{ customer-profile.Order.Hash }}" /> </form> |
Akcja odpowiada za płacenie punktami.
0 1 2 3 4 5 6 7 8 |
<div class="flex-ui vertically-centered-ui"> <p class="f-left-ui">{{translations.WantToUsePoints}}</p> <div class="form-lq no-message-lq block-ui"> <input type="hidden" name="__action" value="Order/PointsUse" /> <button class="post-lq parent-container-reload-lq f-right-ui wider-button-ui"><i class="ti-cup"></i> {{ translations.PayViaLoyaltyPoints }}</button> </div> </div> |
Akcja odpowiada za możliwość opłacenia zamówienia gdy wcześniej się to nie udało (np. w wyniku awarii internetu). Zawiera następujące pola:
- id – pole wymagane typu int
- hash – pole typu string
0 1 2 3 4 5 6 7 8 |
<form action="{{ page.Url }}{{ page.QueryString | H}}" method="post"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Order/RestorePayment" /> <input type="hidden" name="id" value="{{ order.Id }}" /> <input type="hidden" name="hash" value="{{ customer-profile.Order.Hash }}" /> <button>Zatwierdź</button> </form> |
Akcja odpowiedzialna za zwrot. Posiada następujące pola:
- orderID – pole wymagane, typu int
- no – pole wymagane, typu int
- quantity – pole może przyjąć wartości od 0.01 do 99999, typu int
- message – maksymalna długość tego pola wynosi 1000 znaków
- accountNumber – maksymalna długość tego pola wynosi 50 znaków
- returnId – pole to może pozostać puste lub przyjąć typ int
- files – pole wczytujące pliki
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
<form method="POST"> <input type="text" name="quantity" min="1" placeholder="{{translations.Com_Quantity}}"/> <span class="unit"></span> {% assign returnTyppes = config.Complaints.Returns | Size -%} {% if returnTyppes > 1 -%} <select name="returnId" placeholder="{{ translations.Prf_ChooseReturn }}"> <option value="">* {{ translations.Prf_ChooseReturn }}</option> {% for ret in config.Complaints.Returns -%} <option value="{{ret.Id}}">{{ret.Name}}</option> {% endfor -%} </select> <span class="cs-validation" data-field="returnId" data-validator="required">{{translations.Com_RequiredField}}</span> {% endif -%} <textarea name="message" placeholder="{{translations.Com_AditionalInfo}}"></textarea> <span data-field="message" data-validator="maxLength" data-value="1000">{{translations.Com_MaxLenghtExceeded}}: 1000</span> <input type="text" name="accountNumber" placeholder="{{translations.Crt_BankAccountNumber}}" /> <span data-field="accountNumber" data-validator="maxLength" data-value="50">{{translations.Com_MaxLenghtExceeded}}: 50</span> <button>Zatwierdź</button> <input type="hidden" name="no" value=""/> <input type="hidden" name="orderId" value=""/> <input type="hidden" name="__action" value="Order/ReturnAdd" /> <input type="hidden" name="__CSRF" value="{{page.CSRF}}"/> </form> |
Akcja odpowiedzialna za pobranie statusu zamówienia na podstawie id i adresu e-mail. Posiada pola:
- id – pole obowiązkowe, typu int
- email- Jest to pole wymagane,wyrażenie regularne, jego maksymalna długość to 192 znaki
0 1 2 3 4 5 6 7 8 |
<form> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Order/StatusGet" /> <input type="hidden" name="id" value="{{ customer-profile.Order.Id }}" /> <input type="email" name="email" placeholder="" required /> <button>Zatwierdź</button> </form> |
TinUpdate
Akcja odpowiedzialna za aktualizację numeru TIN. Posiada pola:
- vateu – pole typu string. Maksymalna długość dla pola to 2 znaki
- tin – pole typu string
- ssn – pole typu string. Maksymalna długość dla pola to 20 znaków
0 1 2 3 4 5 6 7 |
<form> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Order/TinUpdate" /> <input type="email" name="tin" value="{{ config.Shop.TIN }}"/> <button>Zatwierdź</button> </form> |
Akcja odpowiadająca za kolejny krok w przypadku składania zamówienia.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<div class="shopping-cart"> Wygląd strony </div> <form id="nextStep"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Order/StepNext" /> <input type="hidden" name="__template" value="partials/cart/cart-template.html" /> </form> <script> var data = $('#nextStep').serializeArray(); $.post(null, data, function(result) { if (result.action.Result) { $('.shopping-cart').replaceWith(result.template); } }); </script> |
Akcja odpowiedzialna za powrót do poprzedniego kroku podczas składania zamówienia.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
<div class="shopping-cart"> Wygląd strony </div> <form id="nextPrev"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Order/StepPrev" /> <input type="hidden" name="__template" value="partials/cart/cart-template.html" /> </form> <script> var data = $('#nextPrev').serializeArray(); $.post(null, data, function(result) { if (result.action.Result) { $('.shopping-cart').replaceWith(result.template); } }); </script> |
Newsletter
Akcja odpowiada za działanie związane z newsletterem.
Kod odpowiadający za subskrypcję do newslettera. Posiada następujące pola:
- email – pole obowiązkowe, wyrażenie regularne, maksymalna długość dla tego pola to 192 znaki
- tos – przyjmuje wartość int[] – dane pole może zostać przekazane wielokrotnie w ramach jednej akcji, wartość int
- channelKey – pole typu string[] – dane pole może zostać przekazane wielokrotnie w ramach jednej akcji
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<form id="NewsletterSubscribeForm" action="{{ page.Url }}{{ page.QueryString | H}}" method="post" novalidate> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Newsletter/Subscribe" /> <input type="email" name="email" value="{{ customer.Email }}" {% if customer.Email == blank -%} placeholder="* {{ translations.Com_EmailAddress }}" {% endif -%} required /> <button title="{{ translations.Nls_NewsletterSubscribeTooltip }}">+</button> <div class="switch "> {% for tos in config.TOS.Consents.Newsletter -%} {% if tos.Statement -%} <label>{{tos.Text}}</label> {% else -%} <input name="tos" id="tos{{ tos.Id }}" type="checkbox" value="{{ tos.Id }}" {% if tos.Required -%} required {% endif -%} /> <label for="tos{{ tos.Id }}">{% if tos.Required -%}*{% endif -%} {{tos.Text}}</label> {% endif -%} {% endfor -%} </div> <span class="legend">* {{ translations.Reg_RequiredFieldsExp }} </span> </form> {% for channel in tos.Channels -%} <label class="checkbox-ui channel-ui {% if onlyEmail == false -%} channel-lq {% endif -%} {% if tos.Statement == false -%} disabled-channel-lq {% endif -%}"> {% if onlyEmail == false -%} <input type="checkbox" name="channelKey" value="{{ channel.Key }}" {% if tos.Statement == false -%} disabled {% endif -%} /> {% else -%} <input type="hidden" name="channelKey" value="{{ channel.Key }}" checked /> <input type="checkbox" checked disabled /> {% endif -%} <span class="label-ui">{{ channel.Name }}</span></label> {% endfor -%} |
Kod odpowiedzialny za wypisanie się z subskrypcji mailowej.
0 1 2 3 4 5 6 7 8 |
<form id="NewsletterUnsubscribeForm" action="{{ page.Url }}{{ page.QueryString | H}}" method="post"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Newsletter/Unsubscribe" /> <input type="hidden" name="__template" value="customer/profile-account.html" /> <p>{{ customer.Email }}</p> <button>Anuluj subskrypcję</button> </form> |
Akcje GET
Akcja ta umożliwia pobieranie danych z serwera celem utworzenia np. breadcrumbs.
Akcja odpowiada za pobranie miast, w których znajdują się punkty odbioru. Zawiera następujące pola:
- country – pole typu string, maksymalna długość tego pola wynosi 2 znaki
- typeId – pole typu int
- all – pole przyjmuje wartość bool (true/false)
- stockLevels – pole przyjmuje wartość bool (true/false)
0 1 2 3 4 5 6 7 8 9 |
$.get('', {__csrf:__CSRF, __action:'Get/CollectionPointCities', stockLevels: true}, function(res){ window.CitiesWithPOO = res.action.Object; $('.show-shops-infos-lq').html(''); var size = window.CitiesWithPOO.length; for(i=0; i<size; i++){ $('.show-shops-infos-lq').append(''+window.CitiesWithPOO[i]+''); } }); |
Akcja odpowiada za pobranie punktów odbioru towarów. Zawiera następujące pola:
- country – maksymalna długość tego pola wynosi 2 znaki
- city – maksymalna długość tego pola wynosi 50 znaki
- typeId – pole typu int
- all – pole przyjmuje wartość bool (true/false)
- stockLevels – pole przyjmuje wartość bool (true/false)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<div class="box-ui clear-after-ui"/> {% if order.SelectedDelivery.CollectionPoint -%} <div class="f-left-ui cart-option-ui address-ui half-ui-with-space-ui collection-point-info-lq"/> <p/> {% if order.SelectedDelivery.CollectionPointTypeId == 2 -%} {{ translations.ChoosenInpostMachine }} {% else -%} {{ translations.ChoosenCollectionPoint }} {% endif -%} <p/> <div class="right-corner-ui"> <button class="btn-pure-ui other-address-ui show-map-in-order-lq"> <i class="va-mid-ui ti-pencil"></i> <span class="va-mid-ui line-height-1-ui"/<{{translations.Change}}</span> </button> </div > <div class="box-ui clear-after-ui"> {% assign cp = order.SelectedDelivery.CollectionPoint -%} {% assign name = cp.Address | Split:',' | Last | Split:'(' | First -%} {% if name == '' or name == ' ' or name == ' ' -%} {% assign name = cp.Address | Split:'(' | Last | Remove:')' -%} {% capture name -%}{{name}}{% endcapture -%} {% endif -%} <p><strong>{{name}}</strong></p> <p>{{cp.Street}} {{cp.StreetNo}}{% if cp.UnitNo != null and cp.UnitNo != '' -%}/{{cp.UnitNo}}{% endif -%}</p> <p>{{cp.ZipCode}} {{cp.City}}</p> <p>{{cp.Country}}</p> |
Pobiera grupy podrzędne dla wskazanej grupy. Akcja ta umożliwia zbudowanie dynamicznego menu czy breadcrumbs. Zawiera następujące pola:
- groupId – pole typu int.
- languageId – pole typu int.
- levels – pole typu int.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
<script type="text/javascript"> (function () { $(function () { $('nav.breadcrumbs>ol>li').hover( function () { var t = $(this), gId = ('' + t.data('id')).split(',')[1]; if (gId && t.find('ol').length == 0) { $.get(null, { __action: 'Get/Groups', groupId: gId, languageId: __lngId }, function (d) { var obj = d.action.Object; if (obj.length) { var ol = $('<ol></ol>'); t.append(ol); $.each(obj, function (i, el) { var a = $('<a></a>').attr('href', el.Url).text(el.Title); ol.append(a); a.wrap('<li></li>') }); } }); } else t.find('ol').show(); }, function () { $(this).find('ol').hide(); } ); }); })(jQuery); </script> |
Akcja odpowiada za wyszukiwarkę. Posiada jedno pole – search – jest to pole wymagane, jego maksymalna długość to 100 znaków.
0 1 2 3 4 5 6 7 |
<form action="{{ page.Url }}{{ page.QueryString | H}}" method="post"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Get/Search" /> <input type="search" name="search" placeholder="{{ translations.Sea_SearchProduct }}" maxlength="50" required /> <button>Szukaj</button> </form> |
Akcja odpowiada za zaawansowaną wyszukiwarkę.Zawiera następujące pola:
- search – maksymalna długość dla tego pola wynosi 100 znaków.
- searchAll – maksymalna długość dla tego pola wynosi 100 znaków.
- searchAny – maksymalna długość dla tego pola wynosi 100 znaków.
- searchWild – maksymalna długość dla tego pola wynosi 100 znaków.
- fields – pole typu int.
- flags – pole typu int.
- priceFrom – pole to może pozostać puste lub przyjąć typ int.
- priceTo – pole to może pozostać puste lub przyjąć typ int.
- groupId – pole to może pozostać puste lub przyjąć typ int.
- manufactureId – pole to może pozostać puste lub przyjąć typ int.
- brandId – pole to może pozostać puste lub przyjąć typ int.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<form> <input type="hidden" name="__action" value="Get/SearchAdvanced" /> <ul class="switches"> <input name="$minPrice" type="hidden" /> <input name="$maxPrice" type="hidden" /> {% for filter in filters -%} <li> {{ filter.Heading }}<br> <ul> {% for value in filter.Values -%} {% assign long = value.Text | Size %} {% if long < 40 -%} <li> <input id="flt_{{ value.Field }}_{{ value.Value }}" name="{{ value.Field }}" type="checkbox" {%if value.Selected%}checked{%endif%} value="{{ value.Value }}"/> </li> {% else -%} <li> <input id="flt_{{ value.Field }}_{{ value.Value }}" name="{{ value.Field }}" type="checkbox" {%if value.Selected%}checked{%endif%} value="{{ value.Value }}"/> </li> {% endif -%} {% endfor -%} </ul> </li> {% endfor -%} </ul> <button>Zatwierdź</button> </form> |
Akcja odpowiada za wyświetlanie podpowiedzi 5 towarów w trakcie wyszukiwania. Akcja posiada jedno pole search. Jest to pole obowiązkowe, jego maksymalna długość to 100 znaków.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<script type="text/javascript"> function autocomplete(e) { var phrase = $(e.currentTarget).val().replace(/[!@#$%^&*()+={}\[\]:;"'<,>.?\~`\\|]*/gi, ''); if (phrase != '' && phrase.length > 1) { $.get(location.pathname, { __action: 'Get/SearchAutocomplete', search: phrase }).then(function (res) { if($(window).width() > 1279){ var right = 'right: 50px'; } else if($(window).width() > 680){ var right = ''; } else { var right = 'right: 61px'; } var loader = '<img class="loader-for-autocomplete-lq" style="position: absolute; top: 50%; transform: translateY(-50%);" src="css/img/alo.gif" />'; $('.quick-search-form-lq.autocomplete-form-lq').append(loader); var url = res.action.Redirect302; $.get(url, {__collection:'products.Products|page.BaseHref|currency|config.Products.ShowCode'}, function(res) { $('.autocomplete-lq').remove(); var list = res.collection['products.Products']; var showCode = res.collection['config.Products.ShowCode']; if (list.length > 0){ if (list.length > 5) { var size = 5; } else { var size = list.length; } var baseHref = res.collection['page.BaseHref']; var currency = res.collection['currency']; |
Akcja odpowiada za zastosowanie filtrów wyszukiwania. Posiada jedno pole __skipParameter. Pole typu string[] – dane pole może zostać przekazane wielokrotnie w ramach jednej akcji.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
<form> <input type="hidden" name="__action" value="Get/SearchFilters" /> <div> <!-- W tym divie znaleźć się mogą przykładowe filtry, np. minimalna/maksymalna cena --> </div> <ul class="switches"> <input name="$minPrice" type="hidden" /> <input name="$maxPrice" type="hidden" /> {% for filter in filters -%} <li> <span class="fa fa-plus"></span> {{ filter.Heading }}<br> <ul class="switch-group undercategories hidden mCustomScrollbar"> {% for value in filter.Values -%} {% assign long = value.Text | Size %} {% if long < 40 -%} <li> <span class="switch-name">{{ value.Text }}</span> <input id="flt_{{ value.Field }}_{{ value.Value }}" class="switch-input" name="{{ value.Field }}" type="checkbox" {%if value.Selected%}checked{%endif%} value="{{ value.Value }}"/> <span class="switch-label"></span> <span class="switch-handle"></span> </li> {% else -%} <!-- If filter name string longer than 40 then make higher li --> <li class="long"> <span class="switch-name">{{ value.Text }}</span> <input id="flt_{{ value.Field }}_{{ value.Value }}" class="switch-input" name="{{ value.Field }}" type="checkbox" {%if value.Selected%}checked{%endif%} value="{{ value.Value }}"/> <span class="switch-label"></span> <span class="switch-handle"></span> </li> {% endif -%} {% endfor -%} </ul> </li> {% endfor -%} </ul> <button>Zatwierdź</button> </form> |
Akcja odpowiada za wyświetlanie podpowiedzi 5 towarów w trakcie wyszukiwania. Akcja posiada jedno pole search. Jest to pole obowiązkowe, jego maksymalna długość to 100 znaków.
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<script type="text/javascript"> function autocomplete(e) { var phrase = $(e.currentTarget).val().replace(/[!@#$%^&*()+={}\[\]:;"'<,>.?\~`\\|]*/gi, ''); if (phrase != '' && phrase.length > 1) { $.get(location.pathname, { __action: 'Get/SearchAutocomplete', search: phrase }).then(function (res) { if($(window).width() > 1279){ var right = 'right: 50px'; } else if($(window).width() > 680){ var right = ''; } else { var right = 'right: 61px'; } var loader = '<img class="loader-for-autocomplete-lq" style="position: absolute; top: 50%; transform: translateY(-50%);" src="css/img/alo.gif" />'; $('.quick-search-form-lq.autocomplete-form-lq').append(loader); var url = res.action.Redirect302; $.get(url, {__collection:'products.Products|page.BaseHref|currency|config.Products.ShowCode'}, function(res) { $('.autocomplete-lq').remove(); var list = res.collection['products.Products']; var showCode = res.collection['config.Products.ShowCode']; if (list.length > 0){ if (list.length > 5) { var size = 5; } else { var size = list.length; } var baseHref = res.collection['page.BaseHref']; var currency = res.collection['currency']; |
Akcja ta pozwala na zwrócenie wartości ID towaru znajdującego się w bazie e-Sklepu na podstawie ID towaru w bazie systemu ERP (GIDNumber). Może być przydatna podczas pisania własnych dodatków dla Comarch e-Sklep Sync. Akcja posiada tylko jedno pole: gidNumbers – czyli tablicę przyjmującą wartości typu int.Przykład implementacji funkcji:
0 1 2 3 4 5 6 7 8 9 |
<script type="text/javascript"> function getProductID(...gidNumbers) { jQuery.get(null, jQuery.param( {__action:'Get/ProductId', gidNumbers: gidNumbers}, true), res => res.action.Object ); }, </script> |
Produkty
Akcja ta odpowiada za działania związane z produktami, takimi jak możliwość dodania opinii na temat produktu.
Akcja odpowiada za złożenie zapytania o cenę produktu. Zawiera następujące pola:
- productId – pole wymagane, typ pola to int
- email – pole obowiązkowe,wyrażenie regularne, maksymalna długość dla tego pola to 192 znaki
- phoneNo – maksymalna długość tego pola to 20 znaków
- quantity – pole obowiązkowe, pole przyjmuje wartość między 1 a 99999
- unitId – pole to może pozostać puste lub przyjąć typ int
- message – maksymalna długość dla tego pola wynosi 500 znaków
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Product/AskForPrice" /> <input type="hidden" name="productId" value="{{ product.Id }}" /> <input type="email" name="email" value="{{ customer.Email }}" required /> <input type="tel" name="phoneNo" value="{{ customer.Address.PhoneNo }}"/> <input type="button" value="-" /> <input type="text" name="quantity" value="1"/> <input type="button" value="+" field='quantity'/> {% if product.Units[1] -%} {% for unit in product.Units -%} <input type="button" value="{{ unit.Name }}"/> <input type="hidden" value="{{ unit.Id }}" data-ratio="{{ unit.Ratio }}"/> {% endfor -%} {% endif -%} {% for unit in product.Units -%} {% if unit.Default == true or unit.Id == null -%} <input name="unitId" type="hidden" value="{{ unit.Id }}"/> {% endif -%} {% endfor -%} <textarea type="text" name="message" required></textarea> <button>Zatwierdź</button> </form> |
Akcja odpowiada za pobieranie stanów magazynowych w salonach danego towaru. Zawiera następujące pola:
- product – pole wymagane
- country – maksymalna długość tego pola to 2 znaki
- city – maksymalna długość tego pola to 50 znaków
- pointTypeId – pole typu int
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
function showShopsInfos(e) { var city = $(e.currentTarget).val(); if(city != ''){ var productType = $('[name=productType]').val(); if (productType == 'batch'){ var productId = $('[data-product-id]').data('product-id'); var supplyId = $('[data-supply-id].active-lq').data('supply-id'); } else if (productType == 'clip'){ var productId = $('[data-supply-id].active-lq').data('supply-id'); } else { var productId = $('[data-product-id]').data('product-id'); } var downloaded = false; var index = ''; if(window.productsWithPOO){ var size = window.productsWithPOO.length; for(i=0; i<size; i++){ index = i; if(window.productsWithPOO[i].name == city+'-'+productId+'-'+supplyId){ downloaded = true; index = i; break; } } if(!downloaded){ window.productsWithPOO.push({name: city+'-'+productId+'-'+supplyId}); index = index + 1; } } else { window.productsWithPOO = []; window.productsWithPOO.push({name: city+'-'+productId+'-'+supplyId}); index = 0; } if(!downloaded){ $('.during-ajax-modal-lq').removeClass('hidden-lq'); $.post(null, {__csrf:__CSRF, __action:'Product/CollectionPointsStockLevelsGet',city:city ,products:JSON.stringify([{ProductId:productId, SupplyId:supplyId}])},function(res){ if(window.productsWithPOO[index].name == city+'-'+productId+'-'+supplyId){ window.productsWithPOO[index].shops = res.action.Object; appendShopsInfos(window.productsWithPOO[index].shops); $('.during-ajax-modal-lq').addClass('hidden-lq'); } }); } else { appendShopsInfos(window.productsWithPOO[index].shops); } } }; |
Jeżeli chcesz pokazać w e-Sklepie ilości towaru w podziale na magazyny (e-Sklepu i hurtowni), to można je pobrać akcją
$.get(null, {__action:’Product/StockLevelsGet', id:144}, console.log);
Zostanie zwrócony ten sam obiekt Stock (jak np. na szczegółach towaru), ale z dwoma dodatkowymi właściwościami:
> WarehouseId,
> WarehouseName.
Właściwości mogą być puste (null), jeśli jest to stan z ERP, a nie z hurtowni.
Akcja odpowiadająca za dodanie produktu do porównania z innym produktem. Akcja posiada jedno pole productId – pole wymagane, typu int.
0 1 2 3 4 5 6 7 |
<form action="{{ page.Url }}{{ page.QueryString | H }}" method="post"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}"/> <input type="hidden" name="__action" value="Product/ComparisonToolAdd" /> <input type="hidden" name="productId" value="{{ productD.Id }}"/> <input type="hidden" name="url" value="{{ page.BaseHref }}{{ config.DefinedPages.ProductComparisonTool.Url }}"/> </form> |
Akcja odpowiada za usunięcie przedmiotu z porównania. Akcja posiada jedno pole productId – pole wymagane, typu int.
0 1 2 3 4 5 6 7 8 9 |
{% for product in comparer.Products -%} <form action="{{ page.Url }}{{ page.QueryString | H }}" method="post"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}"/> <input type="hidden" name="__action" value="Product/ComparisonToolDelete" /> <input type="hidden" name="productId" value="{{ product.Id }}"/> <button>Zatwierdź</button> </form> {% endfor -%} |
Akcja odpowiada za pobranie najniższej ceny dostawy dla danego towaru. Zawiera następujące pola:
- id – pole typu int
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<p class="delivery hidden">{{translations.Com_DeliveryFrom}}: <span><span class="delivery-cost"></span> {{currency}}</span></p> <script> Number.prototype.format = function(n, x, s, c) { var re = '\\d(?=(\\d{' + (x || 3) + '})+' + (n > 0 ? '\\D' : '$') + ')', num = this.toFixed(Math.max(0, ~~n)); return (c ? num.replace('.', c) : num).replace(new RegExp(re, 'g'), '$&' + (s || ',')); }; Number.prototype.toPrice = function () { var decimalPlaces = __decimalPlacesPrice || 2; return this.format(decimalPlaces, 3, __decThoSep, __decSep); } $.get('', {__action:'Product/DeliveryCostGet', id: '{{_pd.Id}}' },function(res){ if(res.action.Object.Cost > 0){ $('.delivery').removeClass('hidden'); $('.delivery-cost').text(res.action.Object.Cost.toPrice()); } }); </script> |
Akcja odpowiadająca za złożenie zapytania odnośnie poinformowania użytkownika o ponownej dostępności towaru. Zawiera następujące pola:
- productId – pole wymagane, typu int
- name – pole wymagane, maksymalna długość tego pola to 50 znaków
- email – pole wymagane,wyrażenie regularne, maksymalna długość tego pola to 192 znaki
- phoneNo – maksymalna długość tego pola wynosi 20 znakow
0 1 2 3 4 5 6 7 8 9 10 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Product/NotifyAboutProductAvailability" /> <input type="hidden" name="productId" value="{{ product.Id }}" /> <input type="email" name="email" value="{{ customer.Email }}" required /> <input type="text" name="name" value="{{ customer.Address.Name }}" required /> <input type="tel" name="phoneNo" value="{{ customer.Address.PhoneNo }}"/> <button>Zatwierdź</button> </form> |
Akcja odpowiadająca za dodanie opinii na temat produktu. Zawiera następujące pola:
- rating – pole wymagane, maksymalna długość od 1 do 5 znaków (długość pola to ocena), typ byte
- comment – pole wymagane, maksymalna długość tego pola to 4000 znaków
- author – pole wymagane, maksymalna długość tego pola to 50 znaków
- productId – pole wymagane, typ int
- orderHash – pole typu string
0 1 2 3 4 5 6 7 8 9 10 11 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}"/> <input type="hidden" name="__action" value="Product/ReviewAdd" /> <input type="text" name="author" {% if customer.Authenticated == true -%}{% if customer.ReviewAuthor != "" -%} value="{{ customer.ReviewAuthor | H }}" {% else -%} value="{{ customer.Address.Name | H }}" {% endif -%}{% endif -%} required /> <textarea type="text" name="comment" required></textarea> <input type="hidden" name="rating" value=""/> <input type="hidden" name="productId" value="{{ productD.Id }}"/> <input type="hidden" name="orderHash" value=""/> <button>Zatwierdź</button> </form> |
Akcja odpowiedzialna za dodanie produktu do listy życzeń. Zawiera następujące pola:
- productId – pole wymagane, typ int
- quantity – pole które przyjmuje wartości w zakresie 1 – 99999, typ decimal
- note – maksymalna długość tego pola wynosi 500 znaków
0 1 2 3 4 5 6 7 8 9 10 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}"/> <input type="hidden" name="__action" value="product/WishListAdd" /> <input type="hidden" name="productId" value="{{ product.Id }}" required /> <input type="text" name="quantity" value="1"/> <input type="button" value="+" field="quantity"/> <textarea name="note"></textarea> <button>Zatwierdź</button> </form> |
Akcja odpowiadająca za usuwanie przedmiotu z listy życzeń.
Zawiera jedno pole productId – pole to może przyjąć wartość int lub pozostać puste.
0 1 2 3 4 5 6 7 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}"/> <input type="hidden" name="__action" value="product/WishListDelete" /> <input type="hidden" name="productId" value="{{ product.Id }}" required /> <button>Zatwierdź</button> </form> |
Akcja odpowiada za ustawienie/zmianę daty na liście życzeń. Zawiera następujące pola:
- productId – pole typu int
- note – maksymalna długość tego pola to 500 znaków
- notify – pole to przyjmuje wartość bool (true/false)
- notifyDate – pole typu string, wyrażenie regularne (data)
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
function updateReminderDate(e) { var container = $('.after-adding-to-wishlist-popup-lq .after-adding-to-cart-popup-container-lq'); var message = $(e.currentTarget).data('success'); var productId = $(e.currentTarget).data('id'); var inputVal = $(e.currentTarget).val(); var data = { productId: productId, __csrf: __CSRF, __action: 'Product/WishListUpdate' }; if(inputVal != ""){ var date = inputVal + ' 06:00:00'; data.notify = true; data.notifyDate = date; } else { data.notify = false; } $.post(null, data); }; |
Koszyk
Akcja ta odpowiada za działanie związane z koszykiem, np. dodaniem produktu do koszyka.
Odpowiada za dodanie produktów do koszyka. Akcja zawiera następujące pola:
- productId – pole wymagane, typu int
- quantity- pole może przyjąć wartość w zakresie 0.01 – 99999, typ decimal
- unitId – pole typu int – pole może przyjąć wartość int lub pozostać pusta
- attributeId – przyjmuje wartość int[] – dane pole może zostać przekazane wielokrotnie w ramach jednej akcji, wartość int
- attributeEditable – pole typu string[] – dane pole może zostać przekazane wielokrotnie w ramach jednej akcji
- supplyId – pole może zawierać typ int lub pozostać puste
0 1 2 3 4 5 6 7 8 |
<form method="POST"> <input type="number" name="quantity" value="1" required/> <input type="hidden" name="productId" value="{{productdetails.Product.Id}}" /> <input type="hidden" name="__CSRF" value="{{page.CSRF}}" /> <input type="hidden" name="__action" value="Cart/Add" /> <button type="submit">Dodaj do koszyka</button> </form> |
Akcja odpowiada za ustawianie atrybutów na koszyku. Zawiera następujące pola:
- no – pole to może przyjąć wartość int lub pozostać puste
- attribute – pole typu string[] – dane pole może zostać przekazane wielokrotnie w ramach jednej akcji, maksymalna długość to 1000 znaków.
0 1 2 3 4 5 6 7 8 9 10 11 |
<form method="POST"> {% if page.PageId == config.DefinedPages.Order.Id -%} {% assign attributes = config.Orders.AttributesCart.Position -%} {% assign positionAttrSize = attributes | Size -%} {% assign showInCart = true -%} {% assign action = 'Cart/AttributesSet' -%} {% endif %} <input type="hidden" name="__action" value="{{ action }}" /> <input type="hidden" name="no" value="{{ product.No }}" /> </form> |
Akcja odpowiada za zmianę koszyka. Zawiera jedno pole – Id – jest to pole obowiązkowe, typu int.
0 1 2 3 4 5 6 7 8 9 10 11 12 |
<form method="POST"> {% if customer.Carts[1] -%} <input type="hidden" name="__action" value="Cart/Change" /> <input type="hidden" name="id" /> <ul> {% for cart in customer.Carts -%} <li class="choose-cart-lq" data-id="{{ cart.Id }}" data-name="{{ cart.Name | H }}">{{ translations.Cart }} {{ cart.Name }}</li> {% endfor -%} </ul> {% endif -%} </form> |
Akcja ta umożliwia usunięcie wszystkich produktów z koszyka.
0 1 2 3 4 5 6 |
<form method="POST"> <input type="hidden" name="__CSRF" value="{{page.CSRF}}" /> <input type="hidden" name="__action" value="Cart/Delete" /> <button type="submit">USUŃ</button> </form> |
Akcja dla konfiguratora produktów. Dodaje do koszyka zawartość zwróconą z sync. Zawiera następujące pola:
- id – pole wymagane , maksymalna długość znaków to 40
- type – pole typu int
Akcja odpowiada za importowanie koszyka z pliku. Zawiera następujące pola:
- file – pole wczytujące pliki
- separator – pole to może pozostać puste lub przyjąć typ char
- decimalSeparator – pole to może pozostać puste lub przyjąć typ char
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
importCSV: function(e){ $('.during-ajax-modal-lq').removeClass('hidden-lq'); var file = $(e.currentTarget); file.addClass('prevent-double-change-lq'); var fd = new FormData(); fd.append('__csrf',__CSRF); fd.append('__action','Cart/ImportCSV'); fd.append('file', e.currentTarget.files[0]); $.ajax({data: fd, processData: false, contentType: false, type: 'POST', success: function(data){ file.val(''); if(data.action.Multiple){ var results = data.action.Results; var imported = true; var validationArr = []; for(var i=0; i<results.length; i++){ if(!results[i].Result){ imported = false; var name = results[i].Object.NameNoHtml; var message = results[i].Message if(results[i].Description != null){ message += ' ' + results[i].Description; } validationArr.push({name:name, message:message}); } } } else { if(data.action.Result){ var imported = true; } else { var imported = false; } } |
Akcja odpowiada za ustawienie nazwy wybranego koszyka. Zawiera następujące pola:
- id – pole wymagane, typu int
- name – maksymalna długość znaków dla tego pola to 30
0 1 2 3 4 |
$('body').on('change','.carts-change-popup-lq input',function(e){ $.post(null,{__csrf:__CSRF,__action:'Cart/NameSet',id:$(this).data('id'),name:$(this).val()},function(){location.reload();}); }); |
Odpowiada za usuwanie danej pozycji z koszyka.Akcja następujące pola:
- no – pole obowiązkowe, typu int.
- position – pole typu boolean
0 1 2 3 4 5 6 7 8 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}"/> <input type="hidden" name="__action" value="cart/PositionDelete" /> <input type="hidden" name="__template" value="partials/cart/cart-template.html" /> <input type="hidden" name="no" value=""/> <button>Zatwierdź</button> </form> |
Posiada następujące pola:
- quantity – pole wymagane, przyjmuje wartość od 0.01 do 99999. Typ pola to decimal.
- no – pole wymagane, typu int
0 1 2 3 4 5 6 7 8 9 10 |
<form method="POST"> Produkt: {{cart.Products[forloop.index0].NameNoHtml}}<br/> Ilość: {{cart.Products[forloop.index0].Quantity}}<br/> <button>Zwiększ ilość o 1</button> <input type="hidden" name="quantity" value="{{cart.Products[forloop.index0].Quantity | ToInt | Plus: 1}}"/> <input type="hidden" name="no" value="{{cart.Products[forloop.index0].No}}"/> <input type="hidden" name="__CSRF" value="{{page.CSRF}}" /> <input type="hidden" name="__action" value="cart/QuantityChange" /> </form> |
Odpowiada za ponowne przeliczenie koszyka.
0 1 2 3 4 5 6 7 |
<form method="post"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="cart/Recalculate" /> <input type="hidden" name="__template" value="order/cart.html" /> <input type="hidden" name="__collection" value="customer.Cart.Value" /> </form> |
Akcja obsługuje dodawanie zestawu produktów. Posiada następujące pola:
- productId – wymagane, typ pola int
- setId – wymagane, typ pola int
- quantity – typ pola int, przyjmuje wartości w zakresie 1-99
- attributeId – dane pole może zostać przekazane wielokrotnie w ramach jednej akcji, typ int[]
- supplyId – dane pole może zostać przekazane wielokrotnie w ramach jednej akcji, typ int[]
0 1 2 3 4 5 6 7 8 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}"/> <input type="hidden" name="__action" value="cart/SetAdd" /> <input type="text" name="productId" value="{{set.SetId }}" required/> <input type="text" name="setId" value="1"/> <button>Zatwierdź</button> </form> |
Kontakt
Akcja ta odpowiada za kontakt, np. w celu zapytania o dany produkt.
Akcja pozwalająca na złożenie zapytania o produkt. Pola:
- productId – pole wymagane, typu int
- email – pole obowiązkowe, wyrażenie regularne, maksymalna długość pola to 192 znaki
- phoneNo – maksymalna długość tego pola to 20 znaków
- name – pole obowiązkowe, maksymalna długość tego pola to 50 znaków
- message – pole obowiązkowe, maksymalna długość tego pola wynosi 500 znaków
- copy – pole typu bool (true/false)
0 1 2 3 4 5 6 7 8 9 10 11 12 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Contact/AskAboutProduct" /> <input type="hidden" name="productId" value="{{ product.Id }}" /> <input type="email" name="email" value="{{ customer.Email }}" required /> <input type="text" name="name" value="{{ customer.Address.Name }}" required /> <input type="tel" name="phoneNo" value="{{ customer.Address.PhoneNo }}"/> <textarea type="text" name="message" required></textarea> <input type="checkbox" name="copy"/> <button>Zatwierdź</button> </form> |
Akcja odpowiadająca za wysłanie zawartości formularza kontaktowego. Zawiera następujące pola:
- email – pole wymagane,wyrażenie regularne, maksymalna długość tego pola to 192 znaki
- name – maksymalna długość tego pola wynosi 50 znaków
- phoneNo – maksymalna długość tego pola wynosi 20 znaków
- subject – pole wymagane, maksymalna długość tego pola wynosi 50 znaków
- message – pole wymagane, maksymalna długość tego pola wynosi 500 znaków
- copy – pole typu bool (true/false)
- contactId – pole typu int
- files – pole dla wczytywanych plików. Maksymalna ilość złączników jest określona w obiekcie: config.Contact.AttachmentsMaxCount
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
<form method="POST"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Contact/Send" /> <input type="hidden" name="copy" value="1" /> <input type="email" name="email" value="{{ customer.Email }}" {% if customer.Email == blank -%} placeholder="* {{ translations.Com_EmailAddress }}" {% endif -%} required /> <input type="tel" name="phoneNo" value="{{ customer.Address.PhoneNo }}" placeholder="{{ translations.Prf_Telephone }}" /> <input type="text" name="subject" placeholder="* {{ translations.Cfm_Subject }}" required autofocus /> <textarea type="text" name="message" placeholder="* {{ translations.Pps_Message }}" required /></textarea> <input type="file" name="resume" id="resume" required accept="{{ config.Contact.AttachmentExtensions }}" data-file-size="{{ config.Contact.AttachmentMaxSize }}" data-size-exceeded="{{ translations.Com_FileSizeExceeded | Format: maxSize }}" data-invalid-file="{{ translations.Com_InvalidFile | Format: config.Contact.AttachmentExtensions }}" data-not-added-info="{{translations.AttachementsNotAdded}}" > <button>Zatwierdź</button> </form> |
Nazwa pola musi zawierać przedrostek macro_ np. macro_Pole1 , a typ pola powinie być text.
Przykład modyfikacji w szablonie Bursztyn:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<div class="contact-form {% if settings.googleMapsKey != '' and config.Shop.Address.Latitude != 0 and config.Shop.Address.Longitude != 0 -%} col-md-4 {% endif%} col-sm-12 col-xs-12"> <div class="row"> <div class="content form-content"> <div class="title">{{ translations.Cff_WriteEmail }}</div> <form class="reg-form" id="ContactSendForm" action="{{ page.Url }}{{ page.QueryString | H}}" method="post"> <input type="hidden" name="__csrf" value="{{ page.CSRF }}" /> <input type="hidden" name="__action" value="Contact/Send" /> <input type="hidden" name="copy" value="1" /> <input type="email" name="email" value="{{ customer.Email }}" {% if customer.Email == blank -%} placeholder="* {{ translations.Com_EmailAddress }}" {% endif -%} required /> <input type="tel" name="phoneNo" value="{{ customer.Address.PhoneNo }}" placeholder="{{ translations.Prf_Telephone }}" /> <input type="text" name="subject" placeholder="* {{ translations.Cfm_Subject }}" required autofocus /> <textarea type="text" name="message" placeholder="* {{ translations.Pps_Message }}" required /></textarea> <input type="text" name="macro_Pole1" placeholder="* Pole1" required /> <input type="text" name="macro_Pole2" placeholder="* Pole2" required /> <span class="legend">* {{ translations.Reg_RequiredFieldsExp }} </span> <button class="primary-action">{{ translations.Com_Send }}</button> </form> </div> </div> </div> {% if settings.googleMapsKey != '' and config.Shop.Address.Latitude != 0 and config.Shop.Address.Longitude != 0 -%} <div id="map-canvas" class="col-md-8 col-xs-12"></div> {% endif %} </div> |
Przykład dodania takich pól poniżej: