Jump to content
  • 0

Prestashop 1.6.1.0


donic

Question

Witam wszystkich.

 

Obecnie pracuję na prestashopie 1.6.0.14 jednak chcę się przesiąść na najnowszą wersję, po aktualizacji 1-Click Upgrade wszystko się rozjechało do tego stopnia, że musiałem robić przywracanie backupu.

 

Wpadłem na pomysł, żeby usunąć stary sklep, wyeksportować z niego szablon i skonfigurować nowy od podstaw.

 

Jednak mam problem z połapaniem się w różnicy pomiędzy Kopią zapasową DB z poziomu admina w prestashop a kopią zapasową z poziomu phpMyAdmin.

 

Powiedzcie proszę jaka jest różnica i jak powinienem wykonać kopię bazy danych żeby do nowego sklepu zaimportować wszystkie produkty wraz ze zdjęciami, opisami, złożone już zamówienia itp.

 

Baza danych w panelu admina presty zajmuje 532.22 Kb natomiast w phpMyAdmin ponad 100 mb, dlaczego tak?

 

Proszę o rozwianie wątpliwości i pomoc w przejściu na nowy silnik.

 

Pozdrawiam.

Link to comment
Share on other sites

34 answers to this question

Recommended Posts

  • 0

Prawdopodobnie podczas aktualizacji wybrałeś złe opcje, np. zaznaczyłeś by zmienił się szablon na domyślny i wyłączyły wszystkie nienatywne moduły.

 

Bawienie się w tworzenie sklepu obok i jakieś przeniesienie danych to nie jest rozwiązanie, 1.6.0.14 to przeskok o 1 wersję, to nie jest bardzo duża aktualizacja i wszystko powinno pójść sprawnie.

Link to comment
Share on other sites

  • 0

Prawdopodobnie podczas aktualizacji wybrałeś złe opcje, np. zaznaczyłeś by zmienił się szablon na domyślny i wyłączyły wszystkie nienatywne moduły.

 

Bawienie się w tworzenie sklepu obok i jakieś przeniesienie danych to nie jest rozwiązanie, 1.6.0.14 to przeskok o 1 wersję, to nie jest bardzo duża aktualizacja i wszystko powinno pójść sprawnie.

 

W takim razie jak mam ustawić opcje kopii zapasowej i opcje aktualizacji w 1-Click Upgrade?

Link to comment
Share on other sites

  • 0

Po aktualizacji jak Pan Bóg przykazał zrobiłem wszystko co trzeba włącznie z wyczyszczeniem pamięci podręcznej.

 

W załączniku zamieszczam zrzut ekranu z tym co zobaczyłem jak wszedłem na moją stronę, proszę o pomoc w kwestii tego błędu.

 

post-1009490-0-14187000-1436367044_thumb.jpg

Link to comment
Share on other sites

  • 0

Ja bym proponował postawić gdzieś kopię sklepu i poćwiczyć aktualizację na kopii, bo z tego co zrozumiałem, to trzeba będzie pokombinować z aktualizacją plików szablonu i dodaniem do szablonu nowych plików.

Przy aktualizacji natomiast musisz zaznaczyć:

Wyłącz nie-wbudowane moduły - NIE

Upgrade and switch to the default theme of the new version - NIE

jak zmieniałeś maile to jeszcze:

Zaktualizuj domyślne e-maile - NIE

Link to comment
Share on other sites

  • 0

Tak czy siak problem istnieje dalej, może faktycznie, że szablon nie jest kompatybilny z najnowszą wersją silnika, w każdym razie krzaczy się.

 

Kto ma najnowszy silnik i zaktualizował go bez problemu niech napisze.

Link to comment
Share on other sites

  • 0

Wyłącz paypal i zobacz czy dalej masz to ostrzeżenie. Nie zmieniałeś na serrwerze wersji php ostatnio? Bo raczej tu bym szukał powodu a nie w aktualizacji.

 

Osobiście będę się przymierzał do aktualizacji ok weekendu pewnie, natomiast faktem jest że w szablonie trzeba będzie trochę pogrzebać i też pewnie będę truł o to na forum ;).

Link to comment
Share on other sites

  • 0

Zaktualizowałem już kilka sklepów, jeden z wersji 1.3 do 1.6, jeden z 1.4 do 1.6, w tym ten drugi ze sporą ilością danych - żadnych problemów. 

 

To nie jest wina PrestaShop i ich mechanizmu aktualizacji, oni nie są w stanie przewidzieć wszystkich rzeczy jakie robią "programiści" tworzący sklepy, ewidentnie masz zainstalowany jakiś dodatek, który jest niekompatybilny.

Link to comment
Share on other sites

  • 0

Wersja PHP na serwerze to 5.4 proponowana przez dostawcę jako stabilna, serwer jest za wschodnią granicą tj. Ukraina, możliwości max. PHP 5.6.

 

PayPal usuwałem do samego końca i po wyczyszczeniu cache było dalej to samo.

 

Dodatków mam zainstalowanych wiele, które są potrzebne do codziennej pracy i integracji sklepu z zewnętrznymi systemami tj. np. paczkomaty czy ceneo.

 

Myślałem nawet, że to kwestia szablonu, ale szczerze w to wątpię, jest responsywny i zrobiony w HTML5...a Presta za tym nadąża.

 

Powoli zaczynam się przekonywać do sklepów w cloudzie...bez walki i problemów za niewygórowaną cenę.

 

Pozdrawiam Was i dziękuję za próbę pomocy.

Link to comment
Share on other sites

  • 0

Tak jak było pisane, problem leży w pliku override/classes/Hook.php

 

linia 44, spróbuj po prostu zmienić nazwę tego pliku na Hook.php.bak by się nie uruchamiał jednak by dokładnie wiedzieć co on robił musielibyśmy znać jego zawartość.

 

To nie jest problem z szablonem, szablon działający na 1.6.0.14 nie powinien mieć problemu z działaniem na 1.6.1.0

Edited by Krystian Podemski (see edit history)
Link to comment
Share on other sites

  • 0

zawartość hook'a ale już na wersji 1.6.0.14

 

<?php
 
class Hook extends HookCore {
 
        public static function getHookModuleExecList($hook_name = null) {
                $context = Context::getContext();
                $cache_id = 'hook_module_exec_list' . ((isset($context->customer)) ? '_' . $context->customer->id : '');
                if (!Cache::isStored($cache_id) || $hook_name == 'displayPayment') {
                        $frontend = true;
                        $groups = array();
                        if (isset($context->employee)) {
                                $shop_list = array((int) $context->shop->id);
                                $frontend = false;
                        } else {
                                // Get shops and groups list
                                $shop_list = Shop::getContextListShopID();
                                if (isset($context->customer) && $context->customer->isLogged()) $groups = $context->customer->getGroups();
                                elseif (isset($context->customer) && $context->customer->isLogged(true))
                                                $groups = array((int) Configuration::get('PS_GUEST_GROUP'));
                                else $groups = array((int) Configuration::get('PS_UNIDENTIFIED_GROUP'));
                        }
 
                        // SQL Request
                        $sql = new DbQuery();
                        $sql->select('h.`name` as hook, m.`id_module`, h.`id_hook`, m.`name` as module, h.`live_edit`');
                        $sql->from('module', 'm');
                        $sql->innerJoin('hook_module', 'hm', 'hm.`id_module` = m.`id_module`');
                        $sql->innerJoin('hook', 'h', 'hm.`id_hook` = h.`id_hook`');
                        $sql->where('(SELECT COUNT(*) FROM ' . _DB_PREFIX_ . 'module_shop ms WHERE ms.id_module = m.id_module AND ms.id_shop IN (' . implode(', ',
                                        $shop_list) . ')) = ' . count($shop_list));
                        if ($hook_name != 'displayPayment') $sql->where('h.name != "displayPayment"');
                        // For payment modules, we check that they are available in the contextual country
                        elseif ($frontend) {
                                if (Validate::isLoadedObject($context->country))
                                                $sql->where('(h.name = "displayPayment" AND (SELECT id_country FROM ' . _DB_PREFIX_ . 'module_country mc WHERE mc.id_module = m.id_module AND id_country = ' . (int) $context->country->id . ' LIMIT 1) = ' . (int) $context->country->id . ')');
                                if (Validate::isLoadedObject($context->currency))
                                                $sql->where('(h.name = "displayPayment" AND (SELECT id_currency FROM ' . _DB_PREFIX_ . 'module_currency mcr WHERE mcr.id_module = m.id_module AND id_currency IN (' . (int) $context->currency->id . ', -2) LIMIT 1) IN (' . (int) $context->currency->id . ', -2))');
                        }
                        if (Validate::isLoadedObject($context->shop)) $sql->where('hm.id_shop = ' . (int) $context->shop->id);
 
                        if ($frontend) {
                                $sql->leftJoin('module_group', 'mg', 'mg.`id_module` = m.`id_module`');
                                $sql->where('mg.`id_group` IN (' . implode(', ', $groups) . ')');
                                $sql->where(Module::getPaypalIgnore());
                                $sql->groupBy('hm.id_hook, hm.id_module');
                        }
 
                        $sql->orderBy('hm.`position`');
 
                        // Store results per hook name
                        $results = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql);
                        $list = array();
 
                        // Get all available payment module
                        $payment_modules = array();
 
                        // sip2pay
                        $shiptopay_active = Configuration::get('SHIPTOPAY_ACTIVE') && isset($context->cart->id_carrier) && !$context->cart->isVirtualCart() && $hook_name == 'displayPayment' ? true : false;
                        if ($shiptopay_active) {
                                $payments = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('SELECT id_payment FROM `' . _DB_PREFIX_ . 'shiptopay` WHERE id_carrier = ' . (int) $context->cart->id_carrier);
                                $pArr = array();
                                if (count($payments)) {
                                        foreach ($payments as $p) {
                                                $pArr[] = $p['id_payment'];
                                        }
                                }
                        }
 
                        if ($results) {
                                foreach ($results as $row) {
 
                                        // ship2pay
                                        if (!$shiptopay_active || in_array($row['id_module'], $pArr)) {
                                                $row['hook'] = strtolower($row['hook']);
                                                if (!isset($list[$row['hook']])) $list[$row['hook']] = array();
 
                                                $list[$row['hook']][] = array(
                                                    'id_hook' => $row['id_hook'],
                                                    'module' => $row['module'],
                                                    'id_module' => $row['id_module'],
                                                    'live_edit' => $row['live_edit'],
                                                );
                                        }
                                }
                        }
 
                        if ($hook_name != 'displayPayment') {
                                Cache::store($cache_id, $list);
                                // @todo remove this in 1.6, we keep it in 1.5 for retrocompatibility
                                self::$_hook_modules_cache_exec = $list;
                        }
                }
                else $list = Cache::retrieve($cache_id);
 
                // If hook_name is given, just get list of modules for this hook
                if ($hook_name) {
                        $retro_hook_name = Hook::getRetroHookName($hook_name);
                        $hook_name = strtolower($hook_name);
 
                        $return = array();
                        if (isset($list[$hook_name])) $return = $list[$hook_name];
                        if (isset($list[$retro_hook_name])) $return = array_merge($return, $list[$retro_hook_name]);
 
                        if (count($return) > 0) return $return;
                        return false;
                }
                else return $list;
        }
 
}
Link to comment
Share on other sites

  • 0

Problemem jest chyba moduł SHIPTOPAY

 

e: znowu się zaczytałem i nie widziałem kilku odpowiedzi ;)

bywa, nadrobisz, nic straconego, shiptopay to obowiązkowy modu i nie wyobrażam sobie presty bez niego

  • Like 1
Link to comment
Share on other sites

  • 0

Z którego modułu korzystasz?

Bo też się rozglądam za jakimś ship2pay albo payments2carriers ale czytając tematy na forum się pogubiłem który jest dobry a który niezbyt (nawet niedawno pytałem o sprawdzone tu https://www.prestashop.com/forums/topic/327914-brak-p%C5%82atno%C5%9B%C4%87-za-pobraniem/)

 

Ja korzystam z Ship to Pay v1.02, w zupełności wystarcza i spełnia oczekiwania, jest prosty tak ja nowoczesny ecommerce i wystarczający.

 

Szczerze powiem, że nie znam payments2carriers, też jest darmowy? skąd moża go pobrać? chętnie stestuję.

Link to comment
Share on other sites

  • 0

ok, dzięki, jutro zmienię i dam znać czy działa

 

zmiany wprowadzę po aktualizacji bo obecnie znowu siędzę na 1.6.0.14

Edytowałem plik hook i zmieniłem treść na wskazaną, co prawda nie zaktualizowałem potem sklepu tylko pracowałem na istniejącym i powiem, że podczas zmiany kolejności wyświetlania metodą drag&drop w produktach sklep myśli i myśli dodatkowo bardzo wolno wchodzi mi w moduły.

Link to comment
Share on other sites

  • 0

Nie wiem za co odpowiada ten plik hook, ale zainstalowałęm u siebie moduł od Krystiana i na 1.6.0.14 działa dobrze, do 1.6.1 jeszcze nie aktualizowałem.

 

Ship to Pay v2.0? U mnie też działa znakomicie.

 

Nie wiem tylko dlaczego oficjalnie występuje w v1.0.2 a w v2.0 nie mogłem znaleźć nigdzie w necie.

Link to comment
Share on other sites

  • 0

Shiptopay ma tyle odmian, że sam nie wiem - konkretnie mam na myśli ten załączony w tym temacie Posted 08 July 2015 - 10:47 PM, a czy to jest na jakiejś stronie udostępniane aktualnie to nie wiem.

Ten plik hook.php który miałeś poprawiać to chyba jest właśnie z tego modułu stąd o nim wspomniałem.

Edited by ListwySamochodowe.pl (see edit history)
Link to comment
Share on other sites

  • 0

Shiptopay ma tyle odmian, że sam nie wiem - konkretnie mam na myśli ten załączony w tym temacie Posted 08 July 2015 - 10:47 PM, a czy to jest na jakiejś stronie udostępniane aktualnie to nie wiem.

Ten plik hook.php który miałeś poprawiać to chyba jest właśnie z tego modułu stąd o nim wspomniałem.

 

Potwierdzam, plik hook.php wchodzi w skład plików zawartych w module ship2pay.

 

Pozdrawiam.

Link to comment
Share on other sites

  • 0

Witam,

Mam pytanie - zainstalowalismy ship2pay na prescie 1.6.1.4 i mamy nastepujacy problem:
wydaje sie, ze wszystko skonfigurowane jest poprawnie, jednak jezeli podczas zamowienia wybierzemy przewoznika, ktory ustawiony jest jako domyslny, to modul zwraca infomacje przy platnosci "Moduły płatności nie zostały zainstalowane."

jezeli cofniemy sie do poprzedniego kroku, sprobujemy jakakolwiek inna forme wysylki, damy dalej, co poprawnie pokaze opcje platnosci i wtedy znowu damy do tylu, to rowniez domyslna forma dostawy bedzie dzialac

tak samo, jesli na samym poczatku wybierzemy kazda inna forme wysylki niz ta, ktora ustawiona jest jako domyslna - rowniez bedzie dzialac bez zarzutu

czy ktos spotkal sie z podobnym problemem??

- overrides wlaczone
- moduly niestand. rowniez
- cache itd. wylaczone
- debug nie zwraca zadnych komunikatow
- tabela ps_shiptopay zawiera poprawne wartosci
- hooks ok -> actionCarrierUpdate
- moduly platnosci aktywne
- po wylaczeniu ship2pay wszystko dziala elegancko
- wersja ship2pay 2.0
 

 

ponizej zawartosc pliku hook.php

<?php

class Hook extends HookCore
{
    public static function getHookModuleExecList($hook_name = null)
    {
        $context = Context::getContext();
        $cache_id = 'hook_module_exec_list_'.(isset($context->shop->id) ? '_'.$context->shop->id : '' ).((isset($context->customer)) ? '_'.$context->customer->id : '');
        if (!Cache::isStored($cache_id) || $hook_name == 'displayPayment' || $hook_name == 'displayBackOfficeHeader')
        {
            $frontend = true;
            $groups = array();
            $use_groups = Group::isFeatureActive();
            if (isset($context->employee))
                $frontend = false;
            else
            {
                // Get groups list
                if ($use_groups)
                {
                    if (isset($context->customer) && $context->customer->isLogged())
                        $groups = $context->customer->getGroups();
                    elseif (isset($context->customer) && $context->customer->isLogged(true))
                        $groups = array((int)Configuration::get('PS_GUEST_GROUP'));
                    else
                        $groups = array((int)Configuration::get('PS_UNIDENTIFIED_GROUP'));
                }
            }
            
            // SQL Request
            $sql = new DbQuery();
            $sql->select('h.`name` as hook, m.`id_module`, h.`id_hook`, m.`name` as module, h.`live_edit`');
            $sql->from('module', 'm');
            if ($hook_name != 'displayBackOfficeHeader')
            {
                $sql->join(Shop::addSqlAssociation('module', 'm', true, 'module_shop.enable_device & '.(int)Context::getContext()->getDevice()));
                $sql->innerJoin('module_shop', 'ms', 'ms.`id_module` = m.`id_module`');
            }
            $sql->innerJoin('hook_module', 'hm', 'hm.`id_module` = m.`id_module`');
            $sql->innerJoin('hook', 'h', 'hm.`id_hook` = h.`id_hook`');
            if ($hook_name != 'displayPayment')
                $sql->where('h.name != "displayPayment"');
            // For payment modules, we check that they are available in the contextual country
            elseif ($frontend)
            {
                // ShipToPay remove fix (override still exists but module not)
                if(Module::getInstanceByName('shiptopay')->active)
                    $sql->innerJoin('shiptopay', 'stp', 'stp.`id_payment` = m.`id_module` AND stp.`id_carrier` = ' . (int)$context->cart->id_carrier . ' AND stp.`id_shop` = ' . (int)$context->shop->id);

                if (Validate::isLoadedObject($context->country))
                    $sql->where('(h.name = "displayPayment" AND (SELECT id_country FROM '._DB_PREFIX_.'module_country mc WHERE mc.id_module = m.id_module AND id_country = '.(int)$context->country->id.' AND id_shop = '.(int)$context->shop->id.' LIMIT 1) = '.(int)$context->country->id.')');
                if (Validate::isLoadedObject($context->currency))
                    $sql->where('(h.name = "displayPayment" AND (SELECT id_currency FROM '._DB_PREFIX_.'module_currency mcr WHERE mcr.id_module = m.id_module AND id_currency IN ('.(int)$context->currency->id.', -1, -2) LIMIT 1) IN ('.(int)$context->currency->id.', -1, -2))');
            }
            if (Validate::isLoadedObject($context->shop))
                $sql->where('hm.id_shop = '.(int)$context->shop->id);

            if ($frontend)
            {
                if ($use_groups)
                {
                    $sql->leftJoin('module_group', 'mg', 'mg.`id_module` = m.`id_module`');
                    if (Validate::isLoadedObject($context->shop))
                        $sql->where('mg.id_shop = '.((int)$context->shop->id).' AND  mg.`id_group` IN ('.implode(', ', $groups).')');
                    else
                        $sql->where('mg.`id_group` IN ('.implode(', ', $groups).')');
                }
            }

            $sql->groupBy('hm.id_hook, hm.id_module');
            $sql->orderBy('hm.`position`');

            $list = array();
            if ($result = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS($sql))
                foreach ($result as $row)
                {
                    $row['hook'] = strtolower($row['hook']);
                    if (!isset($list[$row['hook']]))
                        $list[$row['hook']] = array();

                    $list[$row['hook']][] = array(
                        'id_hook' => $row['id_hook'],
                        'module' => $row['module'],
                        'id_module' => $row['id_module'],
                        'live_edit' => $row['live_edit'],
                    );
                }
            if ($hook_name != 'displayPayment' && $hook_name != 'displayBackOfficeHeader')
            {
                Cache::store($cache_id, $list);
                // @todo remove this in 1.6, we keep it in 1.5 for retrocompatibility
                self::$_hook_modules_cache_exec = $list;
            }
        }
        else
            $list = Cache::retrieve($cache_id);

        // If hook_name is given, just get list of modules for this hook
        if ($hook_name)
        {
            $retro_hook_name = strtolower(Hook::getRetroHookName($hook_name));
            $hook_name = strtolower($hook_name);

            $return = array();
            $inserted_modules = array();
            if (isset($list[$hook_name]))
                $return = $list[$hook_name];
            foreach ($return as $module)
                $inserted_modules[] = $module['id_module'];
            if (isset($list[$retro_hook_name]))
                foreach ($list[$retro_hook_name] as $retro_module_call)
                    if (!in_array($retro_module_call['id_module'], $inserted_modules))
                        $return[] = $retro_module_call;

            return (count($return) > 0 ? $return : false);
        }
        else
            return $list;
    }
}
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...