OpenCart logo

Při nastavování eshopu OpenCart můžete narazit na banální problém. Aby pro různé země byly různé sazby poštovného (různá výše poplatku za dobírku). Například dobírka pro Českou Republiku a další, v jiné výši, pro několik dalších států EU. Jediná možnost, jak něčeho takového dosáhnout je konkrétní modul oklonovat a následně ho nakonfigurovat požadovaným způsobem. To je nutné udělat pro každou jednotlivou modifikaci. Přijde mi to jako značně nepohodlné, ale realizace není zdaleka tak těžká. Takže, jak na to?

Konkrétní požadavky na funkčnost, zadání

Můj konkrétní problém se týkal paušální platby. Potřebuji rozlišit dobírku pro Českou Republiku a dobírku pro EU státy. Dobírkovné se pro daný region již nemění. S hypotetickými s cenami je můj případ:

  • Dobírka pro ČR za 100Kč
  • Dobírka pro EU za 300Kč

Malý výlet do adresářové struktury

Ještě než začneme klonovat je dobré si udělat malý výlet do adresářové struktury aplikace OpenCart. V zásadě je pro nás důležité dvojí dělení: moduly ovlivňující administrátorskou část a moduly ovlivňující chování obchodu. Na těchto cestách se nachází moduly i jejich překlady:

  • Administrace:
    • Samotné moduly: adresa_eshopu/admin/controller/
    • Šablony modulů: adresa_eshopu/admin/view/template/
    • Lokalizace modulů: adresa_eshopu/admin/language/jazyk/
  • eshop : adresa_eshopu/calalog
    • Samotné moduly: adresa_eshopu/catalog/controller/
    • Šablony modulů: adresa_eshopu/catalog/view/theme/vase_tema/template/
    • Lokalizace modulů: adresa_eshopu/catalog/language/jazyk/

Zde je vždy nutné dohledat příslušný modul, všechny jeho soubory a tyto soubory oklonovat (zkopírovat).

Klonování modulu a modifikace souborů

Samotné klonování probíhá ve dvou krocích. Prvně je potřeba soubory zkopírovat a následovně je nutné tyto soubory editovat a pozměnit.

Modul se kterým budume pracovat se jmenuje flat. Tedy je potřeba oklonovat tento modul. Osobně při klonování používám jednoduché kopírování a za konec názvu souboru přidám pořadové číslo. Výsledkem jsou tyto, nové, soubory:

/admin/controller/shipping/flat2.php
/admin/language/english/shipping/flat2.php
/admin/view/template/shipping/flat2.tpl
/catalog/language/english/shipping/flat2.php
/catalog/model/shipping/flat2.php

Jelikož používám navíc češtinu, je potřeba navíc provést klonování/kopii souborů v adresáři czech. Pokud OpenCart nenalezne jazykovou mutaci pro konkrétní modul, při práci s tímto souborem skončí bílou obrazovkou s výpisem názvu modulu požadující překlad.

Ale práce ještě nekončí! U všech souborů (kromě překladů, tam je to jen otázkou potřeby) je ještě nutné provést editaci a plošně zaměnit původní jméno modulu za nové. Bez této editace budou některé stránky končit čistou bílou stránkou bez jakéhokoliv výpisu chyby. Pro tuto operaci použijte libovolný textový editor (PSPad, Notepad++ apod.) a funkci hromadné nahrazení. V mém případě jsem tedy nahradil všechny výskyty flat za flat2.

Nastavení OpenCart a ověření funkčnosti

Nyní, když máme všechny soubory zkopírovány a změněny, zbývá nastavit samotný OpenCart. Před samotným nastavením plošných poplatků si ještě připravíme Geo Zóny. Těmito zónami odlišíme zákazníky (do jaké země se registrovali) a budeme vědět, kterému přiřadíme který poplatek. Geo zóny se nachází v menu: Správa / Konfigurace / Lokalizace / Geo zóna. Zde je nutné vytvořit dvě zóny. První jsem nazval Česká republika, dal do ní pouze ČR. Druhou jsem nazval ostatní státy a vložil do ní všechny státy EU.

No a posledním krokem a je samotné přiřazení paušálních částek k jednotlivým Geo zónám. V administraci pod položkou Rozšíření / Doprava by se měly nyní objevit dvě položky Paušální sazba. Původní a klonovaná. Pokud je potřebujete nějak odlišit, změnte jednomu jméno v souboru s překladem. Obě položky nainstalujte, aktivujte a každé přiřaďte jednu z výše zmíněných zón v závislosti na nastavené částce.

OpenCart s klonovaným modulem flat / paušální sazba

OpenCart s klonovaným modulem flat / paušální sazba

Ukázka konfigurace paušální částky pro země EU:

Ukázka přiřazení paušální částky a geo zóny

Ukázka přiřazení paušální částky a geo zóny

Doufám, že se toto mini-howto bude někomu hodit a snad v dalších verzích OpenCart již tato drobnost bude řešena elegantněji. Tak ať vám eshop běží.