Jump to content

Migration Prestashop 1.4.9.0 => 1.6.1.1


Recommended Posts

Bonjour à tous,

 

J'ai migré un site marchand sous prestashop version 1.4.9 vers la version 1.6.1.1

J'ai mis un peu de temps mais avec le module 1-Click Upgrade j'ai fait un grand pas en avant !

 

Mais comme souligné sur pas mal de forum, ce module ne se suffit pas si on souhaite migrer avec son thème déjà fait main.

 

Voici donc mes soucis après la migration, ainsi que les étapes que j'ai suivi :

1.4 :

  • Copie du presta en local (wamp), modification des config pour pouvoir accéder au BO (bdd, chemin du presta..)
  • Modification des images dans préférences => images. Nouvelle arborescence de dossier.
  • Téléchargement du module 1-Click Upgrade et configuration => pas de sauvegarde, choix du thème déjà existant (et non pas thème par défaut), activation des modules non-officiel, version majeure 1.6.1
  • Lancement..

Ainsi je me retrouve avec mon presta 1.6.1, dont le BO fonctionne bien (mis à part la lenteur de TOUT le backoffice, et encore plus des boutons Enregistrer dans l'arborescence produit ~30s, mais cela est déjà souligné partout et je suppose qu'il faut attendre une nouvelle mis à jour de la part de prestashop).

Néanmoins, mon thème a quelque peu explosé :P

 

Avec le mode dev activé, j'ai d'abord un message d'erreur assez gênant sur chaque page.

Strict standards: Declaration of myModule::_clearCache() should be compatible with ModuleCore::_clearCache($template, $cache_id = NULL, $compile_id = NULL) in C:\wamp\www\mySite\modules\myModule\myModule.php on line 396

Je me doute bien qu'il faut que ma fonction clearCache se rapproche de la fonction Core, mais je ne vois pas comment. Voici le code :

protected function _clearCache()
{
   $this->_clearCache(NULL, 'myModule');
   Tools::restoreCacheSettings();
}

J'ai un peu tout essayé : laisser clearCache() sans paramètres, mettre uniquement le param du template etc, mais rien n'y fait. Qu'est-ce qui a changé depuis la 1.4.9 ? Que dois-je modifier ?

 

Ensuite, un plus gros problème puisque cette fois c'est une fatal error, le module blockcategories ne fonctionne plus.

Il a été modifié dans le thème maison, mais même si je récupère le code du thème par défaut ça ne fonctionne toujours pas !

 

Notice: Undefined index: blockCategTree in C:\wamp\www\mySite\tools\smarty\sysplugins\smarty_internal_templatebase.php(157) : eval()'d code on line 42

Evidemment c'est le smarty qui me met l'erreur, mais c'est bien le code du fichier blockcategories.tpl qui est mis en cause.

Sauf que dans blockcategories.php j'ai bien la déclaration de blockCategTree

$blockCategTree = $this->getTree($resultParents, $resultIds, $maxdepth, ($category ? $category->id : null));
$this->smarty->assign('blockCategTree', $blockCategTree);
$blockCategTree = $this->getTree($resultParents, $resultIds, Configuration::get('BLOCK_CATEG_MAX_DEPTH'));
unset($resultParents, $resultIds);


$isDhtml = (Configuration::get('BLOCK_CATEG_DHTML') == 1 ? true : false);


$id_category = (int)Tools::getValue('id_category');
$id_product = (int)Tools::getValue('id_product');


$this->smarty->assign('blockCategTree', $blockCategTree);

Du coup je suis un peu bloqué... Pourquoi ne reconnait-il pas blockCategTree ?

Voici les seuls appel que j'en fait dans le tpl

{foreach from=$blockCategTree.children item=child name=blockCategTree}
{if $smarty.foreach.blockCategTree.last}

Comme dans le thème par défaut quoi.

 

Si quelqu'un a une solution, ça me serait utile :D

Merci bien :)

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

Petite nouveauté : Mon module blockcategories est ancré en topHead.

Sauf qu'il est normalement impossible de l'ancrer ici, et je ne sais pas comment il a fait pour être ancré. 

Lorsque je met le module en position Left, là il fonctionne. Sauf que je le veux en haut comme avant.

 

Je ne vois pas trop comment faire pour cibler le problème.

Link to comment
Share on other sites

Je pense que ton pb de smarty vient du fait que dans PS 1.4.x c'était la v2 de Smarty qui était utilisée, et dans PS 1.6, c'est la version 3. Du coup, il y a du code qui n'est plus tout à fait compatible.

De plus, c'est un peu dangereux de "simplement" vouloir re-rendre ton thème PS 1.4 opérationnel sur PS 1.6, car il te manquera des pages relatives aux nouvelles fonctionnalités (commandes groupées, livraisons partielles, etc...)

Link to comment
Share on other sites

Je pense que ton pb de smarty vient du fait que dans PS 1.4.x c'était la v2 de Smarty qui était utilisée, et dans PS 1.6, c'est la version 3. Du coup, il y a du code qui n'est plus tout à fait compatible.

 

De plus, c'est un peu dangereux de "simplement" vouloir re-rendre ton thème PS 1.4 opérationnel sur PS 1.6, car il te manquera des pages relatives aux nouvelles fonctionnalités (commandes groupées, livraisons partielles, etc...)

Merci de ta réponse Johann,

 

A partir du moment où je ne fais pas appel aux commandes groupées ou livraisons partielles je ne devrais pas avoir de problème justement, si ?

Grace au module 1-Click Upgrade le code smarty a logiquement dû être upgradé lui aussi.

 

Après sûrement que le développement n'est plus bon, mais je n'arrive pas à savoir dans quel fichier je dois aller taper.

 

J'ai mes fichiers modules/blockcategories/* qui fonctionnent, et mes fichiers thème/monthème/modules/blockcategories qui fonctionnent eux aussi mais uniquement en position LeftColumn.

La position Top (qui a été assigné par je ne sais quel miracle, j'ai intérêt à ne pas le dégreffer d'ailleurs), ne fonctionne pas et m'affiche cette erreur.

Peut être n'arrive t'il pas à récupérer le .php, je ne sais pas. Quel fichier peut gérer les Hook que je puisse vérifier s'il manque un include ou autre ?

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

Oui j'ai essayé avec le thème par défaut et ça ne fonctionnait toujours pas.

 

La position avait l'air de jouer un jeu important, et j'ai donc fait beaucoup de test (je me suis pas tourné les pouces :P)

 

Dans le fichier blockcategories.php, j'ai la fonction 

public function hookLeftColumn($params)

Dans laquelle il y'avait ma variable que je n'arrive pas à accéder.

Par contre, j'avais aussi une fonction 

public function hookHeader()

 qui elle n'avait pas grand chose, à vrai dire presque rien.

Je l'ai donc transformée ainsi.

public function hookHeader($params)
{
   $this->context->controller->addJS(_THEME_JS_DIR_.'tools/treeManagement.js');
   $this->context->controller->addCSS(($this->_path).'blockcategories.css', 'all');
   return $this->hookLeftColumn($params);
}

Du coup le menu est apparu avec tous les paramètres.

Ensuite j'ai triché le css pour qu'il s'affiche au bon endroit etc...

 

Du coup je n'ai aucune idée de comment le module apparaissait avant puisque même en dés-ancrant le module de toutes les positions il était toujours là...

 

Certes ça ne corrige pas mon problème initial, mais ça le détourne !

Merci du soutien en tout cas ;)

Edited by Shonen (see edit history)
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...