Oxid eshop: instalace cz verze 4.10.2 a PHP 7

Existuje celá řada variant open source aplikací určených pro eshopy. Mezi ty známější můžeme zařadit Prestashop, Magento či například Opencart. Mezi ty méně známe patří Oxid Eshop, který pochází, tuším, z Německa. Tato aplikace je to oproti výše zmíněným celkem jednoduchá a rozhodně, pokud si jí člověk uzpůsobí obrazu svému (resp. svému obchodu), i použitelná.

V tomto příspěvku bych se chtěl věnovat úskalím, které skýtá verze 4.10.2. Konkrétně bych se chtěl věnovat českému překladu a nasazení na server s PHP 7, kde proběhly určité změny, díky kterým je bez úpravy kódu, aplikace nefunkční.

Čeština

Po nějakém čase stráveným googlením a registrací na webech se dá nějaká varianta překladu najít. I ta nejlepší varianta, kterou jsem nalezl, však neobsahovala kompletní překlad. Část jsem si tedy musel sám amatérsky přeložit. Konkrétně se, tuším, jednalo o soubor application/views/flow/cs/lang.php, jehož obsah přikládám:

<?php

$sLangName = "Česky";

$aLang = array(
    'charset'                                               => 'UTF-8',

    // Global
    'DD_SORT_DESC'                                          => 'sestupně',
    'DD_SORT_ASC'                                           => 'vzestupně',
    'DD_CLOSE_MODAL'                                        => 'zavřít',
    'DD_DEMO_ADMIN_TOOL'                                    => 'Otevřít administrační rozhraní',

    // Form validation
    'DD_FORM_VALIDATION_VALIDEMAIL'                         => 'Vyplňte, prosím, platnou e-mailovou adresu.',
    'DD_FORM_VALIDATION_PASSWORDAGAIN'                      => 'Hesla nesouhlasí.',
    'DD_FORM_VALIDATION_NUMBER'                             => 'Zadejte, prosím, číslo.',
    'DD_FORM_VALIDATION_INTEGER'                            => 'Nejsou povoleny desetinná místa.',
    'DD_FORM_VALIDATION_POSITIVENUMBER'                     => 'Zadejte, prosím, kladné čislo.',
    'DD_FORM_VALIDATION_NEGATIVENUMBER'                     => 'Zadejte, prosím záporné číslo.',
    'DD_FORM_VALIDATION_REQUIRED'                           => 'Vyplňte, prosím, všechny povinné údaje.',
    'DD_FORM_VALIDATION_CHECKONE'                           => 'Vyberte, prosím, alespoň jednu z možností.',

    // Header
    'SEARCH_TITLE'                                          => 'Zadejte hledaný výraz...',
    'SEARCH_SUBMIT'                                         => 'Hledat',

    // Sidebar
    'DD_SIDEBAR_CATEGORYTREE'                               => 'Kategorie',
    'DD_SIDEBAR_TAGCLOUD'                                   => 'Štítky',

    // Footer
    'FOOTER_NEWSLETTER_INFO'                                => 'Chci být informován(a) e-mailem o novém zboží a nabídce.',

    // Home page
    'MANUFACTURERSLIDER_SUBHEAD'                            => 'Představujeme naše značky.',
    'START_BARGAIN_HEADER'                                  => 'Nabídka týdne',
    'START_NEWEST_HEADER'                                   => 'Nejnovější zboží',
    'START_TOP_PRODUCTS_HEADER'                             => 'Nejprodávanější',
    'START_BARGAIN_SUBHEADER'                               => 'Ušetřete s naší aktuální nabídkou!',
    'START_NEWEST_SUBHEADER'                                => 'Úplně to nejnovější zboží, které nám dorazilo do skladu.',
    'START_TOP_PRODUCTS_SUBHEADER'                          => 'Nejlepší dva produkty v nabídce.',

    // Contact form
    'DD_CONTACT_PAGE_HEADING'                               => 'Kontakt',
    'DD_CONTACT_FORM_HEADING'                               => 'Kontakt',
    'DD_CONTACT_ADDRESS_HEADING'                            => 'Adresa',
    'DD_CONTACT_THANKYOU1'                                  => "Děkujeme.",
    'DD_CONTACT_THANKYOU2'                                  => " oceníme vaše připomínky.",

    // Link list
    'DD_LINKS_NO_ENTRIES'                                   => 'K dispozici bohužel nejsou žádné odkazy.',

    // Guestbook
    'DD_GUESTBOOK_ENTRIES'                                  => 'Příspěvky',
    'DD_GUESTBOOK_ENTRY_FROM'                               => 'podle',
    'DD_GUESTBOOK_ENTRY_ON'                                 => 'na',

    // 404 page
    'DD_ERR_404_START_TEXT'                                 => 'Informace, které hledáte, možná naleznete na hlavní stránce:',
    'DD_ERR_404_START_BUTTON'                               => 'Hlavní stránka',
    'DD_ERR_404_CONTACT_TEXT'                               => 'Můžeme vám pomocí jinak? <br>Neváhejte nám zavolat nebo napsat e-mail:',
    'DD_ERR_404_CONTACT_BUTTON'                             => 'Kontakt',

    // Login
    'DD_LOGIN_ACCOUNT_PANEL_CREATE_TITLE'                   => 'Zaregistrovat se',
    'DD_LOGIN_ACCOUNT_PANEL_CREATE_BODY'                    => 'Vytvořením účtu budete moci nakupovat rychleji, uložit si více dodacích adres a sledovat objednávky v účtu.',
    'DD_LOGIN_ACCOUNT_PANEL_LOGIN_TITLE'                    => 'Přihlásit se',

    // Billing address
    'DD_USER_BILLING_LABEL_STATE'                           => 'Stát:',
    'DD_USER_SHIPPING_LABEL_STATE'                          => 'Stát:',
    'DD_USER_SHIPPING_SELECT_ADDRESS'                       => 'Vybrat',
    'DD_USER_SHIPPING_ADD_DELIVERY_ADDRESS'                 => 'Zadat doručovací adresu',

    // Order history
    'DD_ORDER_ORDERDATE'                                    => 'Datum:',

    // List views
    'DD_LISTLOCATOR_FILTER_ATTRIBUTES'                      => 'Filtr:',
    'DD_LIST_SHOW_MORE'                                     => 'Produkty...',

    // Recommendation list
    'DD_RECOMMENDATION_EDIT_BACK_TO_LIST'                   => 'Zpět do přehledu',

    // Downloads
    'DD_DOWNLOADS_DOWNLOAD_TOOLTIP'                         => 'staženo',
    'DD_FILE_ATTRIBUTES_FILESIZE'                           => 'Velikost souboru:',
    'DD_FILE_ATTRIBUTES_OCLOCK'                             => 'hod.',
    'DD_FILE_ATTRIBUTES_FILENAME'                           => 'Jméno souboru',

    // Details page
    'BACK_TO_OVERVIEW'                                      => 'Přehled',
    'OF'                                                    => '',
    'DD_PRODUCTMAIN_STOCKSTATUS'                            => 'Skladem',
    'DD_RATING_CUSTOMERRATINGS'                             => 'Hodnocení zákazníků',
    'PAGE_DETAILS_CUSTOMERS_ALSO_BOUGHT_SUBHEADER'          => 'Zákazníci, kteří toto koupili, koupili také jeden z těchto produktů.',
    'WIDGET_PRODUCT_RELATED_PRODUCTS_ACCESSORIES_SUBHEADER' => 'Tyto produkty jsou vhodné k tomuto produktu.',
    'WIDGET_PRODUCT_RELATED_PRODUCTS_SIMILAR_SUBHEADER'     => 'Podívejte se na podobné výrobky.',
    'WIDGET_PRODUCT_RELATED_PRODUCTS_CROSSSELING_SUBHEADER' => 'Zákaznící, kteří se dívali na tento produkt, se také dívaly na tyto produkty.',
    'DETAILS_VPE_MESSAGE_1'                                 => "Tento produkt lze objednat pouze v balení ",
    'DETAILS_VPE_MESSAGE_2'                                 => "",

    // Modal basket
    'DD_MINIBASKET_MODAL_TABLE_TITLE'                       => 'Položky',
    'DD_MINIBASKET_MODAL_TABLE_PRICE'                       => 'Celkem',
    'DD_MINIBASKET_CONTINUE_SHOPPING'                       => 'Pokračovat v nákupu',

    // Checkout
    'DD_BASKET_BACK_TO_SHOP'                                => 'Zpět do obchodu',

    // E-Mails
    'DD_ORDER_CUST_HEADING'                                 => 'Objednávka',
    'DD_FOOTER_FOLLOW_US'                                   => 'Sledujte nás:',
    'DD_FOOTER_CONTACT_INFO'                                => 'Kontakt:',
    'DD_FORGOT_PASSWORD_HEADING'                            => 'Zapomenuté heslo',
    'DD_INVITE_HEADING'                                     => 'Doporučené zboží',
    'DD_INVITE_LINK'                                        => 'Odkaz',
    'DD_NEWSLETTER_OPTIN_HEADING'                           => 'Zasílání novinek',
    'DD_ORDERSHIPPED_HEADING'                               => 'Potvrdit doručení',
    'DD_OWNER_REMINDER_HEADING'                             => 'Málo zboží skladem',
    'DD_PRICEALARM_HEADING'                                 => 'Hlídač ceny',
    'DD_REGISTER_HEADING'                                   => 'Registrace',
    'DD_DOWNLOADLINKS_HEADING'                              => 'Vaše odkazy ke stažení',
    'DD_SUGGEST_HEADING'                                    => 'Doporučené zboží',
    'DD_WISHLIST_HEADING'                                   => 'Oblíbené',

    'DD_ROLES_BEMAIN_UIROOTHEADER'                          => 'Menu',
);

/*
[{ oxmultilang ident="GENERAL_YOUWANTTODELETE"}]
*/

PHP 7

Co se týče přechodu na PHP 7, tak jsem naštěstí na internetu nalezl všeříkající návod, z kterého teď jen shrnu všechny změny, které je potřeba v aplikaci provést.

/core/exception/oxexceptionhandler.php

V tomto souboru je potřeba změnit:

public function handleUncaughtException(Exception $oEx)

Za:

public function handleUncaughtException($oEx)

A dále ještě:

protected function _dealWithNoOxException(Exception $oEx)

Za:

protected function _dealWithNoOxException($oEx)

config.inc.php

Zde je potřeba změnit:

$this->dbType = 'mysql';

Za:

$this->dbType = 'mysqli';

/core/oxsysrequirements.php

A tady je konečně potřeba změnit:

$sClientVersion = mysql_get_client_info();

Za:

$sClientVersion = mysqli_get_client_info();

Po výše provedených úpravách by pak měla aplikace v pořádku fungovat i na serveru s PHP 7. Já mám otestováno, že tomu tak skutečně je.

Aktualizace k výše uvedenému

Asi 14 dní zpátky (31.3.2017) se mi ozval Marco Steinhäuser (OXID Community Manager), kdy mi pochválil článek a vyměnili jsme si pár e-mailů. Na základě mého upozornění navíc došlo i k doplnění chybějícího souboru do překladů (nejnovější překlad by měl být vždy k dispizici na této stránce v právem menu pod Translations). Co se týče PHP 7, tak mi doporučil spíše tento návod, ale mělo by tam být prakticky to samé, o čem píši výše.

Publikováno 27.3.2017 v 10:55 | Kategorie: Oxid eshop