akceptacja klienta prestashop

Na etapie zamówienia domyślnie znajduje się checkbox (krateczka) zgody na warunki regulaminu który musi być zaznaczony aby przejść dalej.

Czasem zachodzi potrzeba dodania dodatkowej, obowiązkowej zgody klienta aby proces zamówienia mógł być zrealizowany. Np. w kwestii akceptacji na przetwarzanie danych osobowych (tzw „Ustawa Konsumencka”). Dziś pokażemy jak dodać taką kratkę.

Tutorial jest przeznaczony dla procesu krokowego wykonywania zamówienia (nie „one page checkout„). Kratka pojawia się na 4 kroku „Wysyłka„. Jeśli masz włączony proces jednostronnicowy wykonywania zamówienia – modyfikacja będzie odmienna. Postaramy się niebawem umieścić stosowną instrukcję na naszym blogu.

Tutorial jest przeznaczony pod wersję Presta Shop 1.6 jednak na nieduże odstępstwa w kodzie w stosunku do poprzednich wersji możesz spróbować wdrożyć to na Twojej wersji.

Dodanie checkboxa w HTML
Otwieramy plik:

themes/{NAZWA-SZABLONU}/order-carrier.tpl
Pod checkboxem z zaznaczeniem regulaminu (okolice 366 linii):
<p class=”checkbox”>
<input type=”checkbox” name=”cgv” id=”cgv” value=”1″ {if $checkedTOS}checked=”checked”{/if} />
<label for=”cgv”>{l s=’I agree to the terms of service and will adhere to them unconditionally.’}</label>
<a href=”{$link_conditions|escape:’html’:’UTF-8′}” class=”iframe” rel=”nofollow”>{l s='(Read the Terms of Service)’}</a>
</p>
doklejamy nasz chceckbox:
<div style=”clear: both;”></div>
<p class=”checkbox”>
<input type=”checkbox” name=”cgv_duo” id=”cgv_duo” value=”1″ />
<label for=”cgv_duo”>{l s=’Tutaj wpisz komunikat związany z drugim checkboxem’}</label>
</p>
Komunikat, gdy nie zaznaczono checkboxa
W tym samym pliku (okolice 425 linii):
themes/{NAZWA-SZABLONU}/order-carrier.tpl
Na jego końcu, zamieniamy kod Smarty:
{addJsDefL name=msg_order_carrier}{l s=’You must agree to the terms of service before continuing.’ js=1}{/addJsDefL}
na:
{addJsDefL name=msg_order_carrier}{l s=’You must agree to the terms of service before continuing.’ js=1}{/addJsDefL}
{addJsDefL name=msg_order_carrier2}{l s=’Nie zaznaczyłeś drugiej kratki’ js=1}{/addJsDefL}
Oczywiście dodajemy komunikat wg uznania.

Mechanizm (JavaScript) pokazywania komunikatu
Otwieramy plik:
themes/{NAZWA-SZABLONU}/js/order-carrier.js
Odnajdujemy funkcję acceptCGV() i na jej początku (zaraz po klamrze otwierającej { ) wklejamy kod:
if (!$(‘#cgv_duo’).is(“:checked”)) {
if (!!$.prototype.fancybox)
$.fancybox.open([
{
type: ‘inline’,
autoScale: true,
minHeight: 30,
content: ‘<p class=”fancybox-error”>’ + msg_order_carrier2 + ‘</p>’
}],
{
padding: 0
});
else
alert(msg_order_carrier2);
return false;
}
Na identycznej zasadzie możemy dodać dowolną ilość takich checkboxów. Oczywiście odpowiednio zmieniając komunikaty oraz identyfikator checkboxa (tutaj został użyty cgv_duo – możemy użyć np. cgv_tres).

przewoźnicy prestashop

Podczas podstawowej konfiguracji sklepu opartego na Presta Shop (u nas w wersji 1.6.1.4) możemy natrafić na bardzo irytujący komunikat:

„nie ma dostępnych przewoźników”
Czasem może się dodatkowo pojawić jeszcze pod spodem:

„Nie ma dostępnych przewoźników, którzy dostarczają pod ten adres”
Pojawia się on na 4 kroku tworzenia zamówienia:

Aby sprawdzić listę dostępnych przewoźników wchodzimy w dział:

Wysyłka -> Przewoźnicy.

Możemy tam ręcznie dodać naszych przewoźników np. Odbiór osobisty albo (ogólnikowo) Kurier. I określić cenę przesyłki w zależności od strefy. Czyli standardowa procedura konfiguracji sklepu.

Mimo wielokrotnego upewnienia się, że przewoźnicy są dodani – dalej ten bład się pojawia i blokuje nam pernamentnie proces składania zamówienia… 🙁

Są różne przyczyny z powodu których może on wystąpić. Prześledźmy typowe z nich.

1. Złe przypisanie kraju do strefy
Aby to wyjaśnić przybliżmy w punktach o co chodzi ze „strefami„:

osoba, która kupuje produkt (i widzi powyższe kroki z obrazka gdzie jest błąd) musi wcześniej wypełnić kartę z adresem dostawy
czyni to niezależnie czy ma konto na sklepie czy kupuje jako gość
w formularzu podawania adresu wybiera pozycję z listy oznaczonej jako „Kraj”
w Presta Shop są podane możliwe kraje, które mogą znaleźć się na tej liście – możemy narzucić jakie kraje będą tam podane,
ta lista jest zdeklarowana w dziale: Lokalizacja -> Kraje
każdy z tych krajów jest przypisany do tzw. „Strefy„
Strefy domyślnie są podzielone na kontynenty. Natomiast idea jest taka, że możemy zdeklarować strefy jakie nam się podoba w zależności od naszych cen dostaw. Np. zamiast kontynentów taki zestaw stref: „Skandynawia„, „Niemcy i Holandia„, „Wyspy brytyjskie” itd. Mamy tu pełną dowolność.
Strefy są natomiast wypisane w konfiguracji każego przewoźnika gdzie określamy jaka cena będzie obowiązywała dla każdej z nich – czyli jak użytkownik wybierze np. kraj będący w strefie „Skandynawia” – system naliczy mu adekwatną kwotę.
Taka jest zasada przypisania kraju do strefy i taki mają one związek z przewoźnikami.

Dla osoby widzącej ten komunikat „nie ma dostępnych przewoźników” w pierwszej chwili właśnie pada na myśl to, że klient wybrał kraj ktrego nie ma w żadnej strefie lub w żadnym z przewoźników nie jest on ujęty.

Musimy się upewnić że każdy z nich posiada takie powiązanie i określenie ceny. Jeśli to zrobiliśmy i dalej to nie działa przejdźmy do punktu drugiego 😉

2. Włączenie zaawansowanego zarządzania stanami magazynowymi.
Jeżeli próby naprawy sytuacji z pkt.1 spełzły na niczym proponujemy takie rozwiązanie. Od razu podkreślę, że nam to pomogło 😉

Na początek sprawdźmy czy mamy włączoną opcję magazynu. Najprościej należy sprawdzić czy mamy pozycję „Magazyn” w menu głównym w zapleczu:

Używanie tej opcji skazuje nas na odpowiednie zarządzanie stanami magazynowymi. Możliwe, że kiedyś przybliżymy ten temat. W każdym razie wyjaśnienia pojawiają się w samym zapleczu a więcej informacji o tej funkcjonalności można znaleźć wchodząc na zakłądkę:

Katalog -> Produkty -> Edycja dowolnego produktu -> Magazyn

Tam (jeśli nie mamy żadnego magazynu w systeme) twóry Presta Shop informują nas, że musimy przynajmiej jeden zdeklarować, określić jego położenie geograficzne, podać dozwolonych przewoźników dla tego magazynu (tu jest pies porzebany!) i każdy z produktów ustalać ilościowo indywidualnie itd. itd. Nie będziemy tutaj zagłębiać się w ten temat. Po prostu dezaktywujemy opcję „Magazyn”.

W tym celu wchodzimy do działu:

Preferencje -> Produkty -> (sekcja) Stan produktów

I zaznaczamy opcję „Włącz zarządzanie magazynem” na „NIE„:

Następnie zapisujemy nasz wybór przyciskiem „Zapisz” będącym pod spodem.

Ku naszej uciesze – po odświeżeniu kroku nr. 4 klient widzi naszych przewoźników!

dodanie waluty w prestashop

Po zalogowaniu do zaplecza wchodzimy w zakładkę:

Lokalizacja » Waluty » Dodaj nową walutę (przycisk u góry)

Następnie wypełniamy pola:

Nazwa waluty: Euro
Kod ISO: EUR
Kod numeryczny ISO: 978 (lista dostępnych kodów jest dostępna na naszym poprzednim poście)
Symbol: 978
Kurs waluty: 0.233252
Włącz: TAK
Resztę pól wypełniamy wg uznania. Co do kursu – na stronie z walutami należy wcisnąć „aktualizacja kursu”.

prestashop facebook

prestashop facebook

 dodanie facebook wysuwanego po najechaniu myszką widgetu z profilem z Facebook.com – wszystkie wersje Presta Shop

 

Rozwiązanie jest dość  intuicyjne

rozwiązanie ogranicza się do:

  1. wklejenia kodu w 1 plik
  2. wgraniu 1 pliku graficznego.

Właściciele sklepów najczęściej wychodzą z założenia, że liczy się efekt stąd nasze sprytne rozwiązanie.

Dodatkowo działa ono niezależnie od wersji Presta Shop.

Osadzenie kodu HTML

Otwieramy plik:

1
/themes/{NAZWA-NASZEGO-SZABLONU}/footer.tpl

Następnie na samym końcu tego pliku znajdujemy zamknięcie znacznika BODY i HTML:

1
2
</body>
</html>

Zaraz przed tym kodem wklejamy poniższy kod. Z tym, że w miejscu:

{TUTAJ WPISZ ADRES TWOJEJ STRONY NA FACEBOOK}

wstawiamy adres naszej strony na Facebook.com (usuwamy ten wpis wraz z klamrami) np. https://www.facebook.com/prestashopkrakow/

Przy okazji zachęcamy do polubienia naszego fan page to modywuje nas do nowych wpisów 😛

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
<div id="facebook_slider" >
<div id="fbox1" style="right: -300px; top: 50%; z-index: 10000;">
<div id="fobx2" style="text-align: left;width:290px;height:350px;">
<a class="open" id="fblink" href="#"></a><img style="top: 0px;left:-50px;" src="/img/facebook-icon.png" alt="">
<iframe src="//www.facebook.com/plugins/likebox.php?href={TUTAJ WPISZ ADRES TWOJEJ STRONY NA FACEBOOK}/&amp;width=290&amp;height=370&amp;show_faces=true&amp;colorscheme=light&amp;stream=false&amp;border_color=%23FFF&amp;header=false" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:290px; height:370px;" allowTransparency="true"></iframe>
</div>
</div>
<script type="text/javascript">
{literal}
jQuery(function (){
jQuery("#fbox1").hover(function(){
jQuery('#fbox1').css('z-index',101009);
jQuery(this).stop(true,false).animate({right:  0}, 500); },
function(){
jQuery('#fbox1').css('z-index',10000);
jQuery("#fbox1").stop(true,false).animate({right: -300}, 500); });
});
{/literal}
</script>
<style type="text/css">
#facebook_slider {
position: relative;
}
#fbox1 {
background-color: #fff;
border: 5px solid #3c95d9;
border-radius: 5px;
position: fixed;
}
#fbox2 {
overflow: hidden;
text-align: left;
}
#fbox1 img {
border: 0 none;
cursor: pointer;
position: absolute;
top: 0;
z-index: 10000;
}
#fbox1 iframe {
border: 0 none;
height: 100%;
overflow: hidden;
position: absolute;
width: 100%;
}
</style>

Wgranie pliku graficznego

Do folderu na serwerze:

1
/img

Wgrywamy ten plik: facebook-icon.png

Wyczyszczenie pamięci podręcznej.

Musimy mieć jeszcze pewność, że zmiany są widoczne na stronie i odświeżony jest system pamięci podręcznej w sklepie. W tym celu w zależności od wersji wchodzimy:

Presta Shop 1.6

Zaawansowane » Wydajność » Wyczyść pamięć podręczną (przycisk u góry tej podstrony)

Presta Shop 1.5

Zaawansowane » Wydajność » przycisk „Wyczyść cache Smarty i Autoload”

Wchodzimy następnie na stronę sklepu (widoczną dla klientów) i sprawdzamy czy widget jest widoczny.

Jeśli nie – asekuracyjnie możemy też zaznaczyć opcję „Wymuś kompilację” na powyższej podstronie „Wydajność” – zapisać następnie odświeżyć stronę kliencką.

W momencie, kiedy widget się pojawi – przywracamy ustawienie na stronie „Wydajność” do takiego jak przed zmianą.

hasło strony

hasło strony

1. Silne hasło to podstawa

Zarówno hasło do bazy danych, do panelu administracyjnego WordPressa czy panelu naszego hostingu powinny być silne i z pewnością odradzam pomysły w stylu:

„admin1”

„haslo123”

Kolejnym najczęściej spotykanym błędem jest tworzenie hasła identycznego na wszystkich kontach jakie posiadamy w sieci.

Osobiście polecam korzystać z haseł składających się z co najmniej 10 znaków, liter dużych i małych jak i cyfr plus nie zaszkodzi jakiś znak specjalny.

2. Zmień domyślną nazwę użytkownika

Domyślna nazwa admin będzie pierwszym słowem którego użyje haker.

3. Zawsze aktualizuj

WordPress bardzo często wypuszcza aktualizacja, a to jedna dziura się znalazła i trzeba załatać, a to kolejna i tak niekiedy co tydzień nowa wersja z byle pierdołą poprawioną pojawia się w panelu i prosi aby ją przyjąć na nasz serwer. Wydawałoby się, że robią te aktualizacje jesteśmy zawsze o krok przed hakerami, ale to błędne myślenie bo to oni są zawsze o krok przed nami, gdyż na swoich blogach trzymamy masę, niekiedy bezużytecznych wtyczek, które są dziurawe jak ser szwajcarski. I podczas gdy programiści oferują nam aktualne wersje WP to hakerzy wchodzą do naszego mieszkania okno zamiast prze frontowe drzwi.

Aktualizujcie więc wtyczki, samego WordPressa, co tylko się da.

Twórzcie zawsze kopie baz i plików zanim ruszycie po większe aktualizacje, niektóre motywy źle je niekiedy znoszą i możemy się zaskoczyć białym ekranem. Pamiętajcie także o aktualizacjach motywów.

Na koniec warto zrobić audyt wtyczek, zastanowić się, która z nich jest nam potrzebna, a która nie.

4. Chroń dostęp do strefy admina

Skorzystajcie tutaj z potęgi jaką daje wam plik .htaccess wklejając na jego końcu następującą regułkę:

<Files wp-login.php>

Order Deny,Allow

Deny from All

Allow from 'wpisz tu swój adres IP tylko bez pazurków'

</Files>

Chrońcie także sam plik .htaccess wklejając również w nim regułkę jak poniżej:

<Files .htaccess>

Order Allow,Deny

Deny from all

Allow from 'wpisz tu swój adres IP tylko bez pazurków'

</Files>

Dodatkowo można iść dalej i całkowicie zmienić domyślne adresy logowania do panelu, mówię tu o standardowym:

domena1.pl/wp-admin/

czy też

domena1.pl/wp-login.php

Tutaj nie musicie znać się na programowaniu i sprawę załatwią za nas wtyczki, choć osobiście wolę autorskie rozwiązania.

Lockdown WP Admin: Wtyczka ta zmieni domyślny adres do logowania, a osoby próbujące się tam dostać dostaną stronę błędu (404). Dodatkowo umożliwia dodanie uwierzytelnienia HTTP, gdzie będziemy mogli ustalić dodatkowy login i hasło, która posłuży jako brama przed dotarcie do drzwi wejściowych.

HC Custom WP-Admin URL: Prosta wtyczka pozwalająca dowolnie zmienić stronę admin i login, aby nieco utrudnić życie hakerom.

iThemes Security: Niektórzy twierdzą, że to jedna z najlepszych wtyczek, ale jak dla mnie jest zbyt zasobożerna i widać obciążenie na słabszych hostingach. Pozwala modyfikować niemalże wszystko na co pozwalały dwie wcześniej wymienione wtyczki, ale do jej obsługi potrzebny jest czas i choć minimalna wiedza na temat tego co robimy.

5. Chroń się przed atakami brute force

Pierwszym krokiem powinno być wyłączenie XML-RPC. W sumie nie wiem co za fanatyk  zostawił tę furtkę dla hakerów otwartą?

Jeśli wyłączcie XML-RPC to następnie dajcie podczas logowania jakąś captchę.

Wiele hostingów posiada własne zabezpieczenia przed atakami Brute Force, ale tyle samo ich nie ma, a jak macie VPS i bez profesjonalnej obsługi i leżycie i kwiczycie. Są również wtyczki, które przytrą nosa osobom, które setki razy próbują zalogować się na bloga, przykładem jest Limit Login Attempts i radzę zapoznać się z nią. Dobra dla początkujących…

6. Skanuj w poszukiwaniu malware

Polecam wtyczkę Wordfence. Ma opcję porównywania plików z repozytorium WordPressa czy też z oryginalnymi wersjami używanej skórki. Dodatkowo powiadomi nas o próbach ataku, zablokuje niejednego przed próbami logowania jak i przypomni nam o aktualizacjach.

Jeśli korzystacie z SSH to warto także co jakiś czas porównywać daty ostatnich edycji plików na serwerze. Co więcej, można pokusić się o szukanie w kodzie wystąpień base64 bądź eval.

Usuń złośliwy kod

No dobra, znaleźliście jakiś syf w kodzie i co teraz z nim zrobić? Sprawdźcie najpierw czy to autentycznie plik WordPressa czy Waszego motywu, bo wiele razy spotkałem się z dodaniem plików przypominających nazwą ważne i kluczowe dla działania pliki WP.

Przed takim usuwaniem warto zabezpieczyć się backupem.

7. Wybierz odpowiedni hosting

Tu polecam zaawansowanym webmasterom własny VPS, nad którym macie pełną kontrolę i gdzie dla każdej ze stron możecie założyć osobne konto. Polecam linuxpl.com, aftermarket.pl.

Przy wyborze hostingu polecam napisać kilka razy do administratorów, zadać im pytanie czy to o sam hosting czy o zabezpieczenia, a  po odpowiedzi da się wyczuć czy macie do czynienia z ludźmi znającymi się na robicie.

8. Czyść swoją stronę

Jak wspomniałem wcześniej każda wtyczka, a nawet sam WordPress to tykająca bomba, która może wybuchnąć w każdej chwili. Dlatego jeśli nie używacie jakiejś wtyczki albo motywu to się tego pozbądźcie. Z wtyczkami nie ograniczajcie się do wyłączenia, usuńcie je całkiem, a jeśli zostały dobrze napisane to i usuną po sobie ślady z bazy danych.

9. Kontroluj wrażliwe dane

Jeśli już czyścicie swoją stronkę ze śmieci to sprawdźcie czy nie zostawiliście cennych informacji na jej temat do wglądu każdemu. Usuńcie na początek plik readme.html. Podobnie polecam sprawdzić pliki phpinfo.php czy i.php. Powiedzą hakerowi wszystko o naszych ustawieniach i będą mapą topograficzną po naszym domu.

10. Bądź czujny

Podłączcie stronę do narzędzia Search Console, a także raz na tydzień zapoznajcie się z nowymi zagrożeniami dotyczącymi nie tylko WP, ale i wszystkich stron. Polecam śledzenie profilu Securi na Twiterze. Można też skorzystać z profesjonalnych narzędzi do badania podatności naszego serwera na ataki DDOS jak i wiele innych, tutaj polecę Penetrator24.com.  znajdziecie tam narzędzie – niestety płatne – które pozwoli Wam spać spokojnie.