Jump to content

[Résolu] hookDisplayNav / switch langue sur PrestaShop 1.6.0.14


Recommended Posts

Salut à tous,

 

J'ai un petit soucis que je n'arrive pas à débug.

Un phénomène propre à la dernière version PrestaShop 1.6.0.14 .

 

Lorseque j'utilise le hookDisplayNav avec rien de plus qu'une sortie smarty tpl de base depuis un module (pour ajouter un menu par exemple), après le switch de la langue sur le front, la page me renvoi une erreur l'assign du smarty :

 

juste après au moment du parse hook dans le header.tpl du :

<nav>{hook h="displayNav"}</nav>

Comme ceci :

<nav><br />
<b>Fatal error</b>:  Call to a member function assign() on a non-object in <b>/home/guillaume/.../classes/module/Module.php</b> on line <b>2090</b><br />

Avec une sortie bisarre dans le header :

<link rel="stylesheet" href="/themes/default-bootstrap/css/modules/blocktopmenu/css/superfish-modified.css" type="text/css" media="all" />
js_def
<script type="text/javascript" src="/js/jquery/jquery-1.11.0.min.js"></script>

En lieu et place des sorties habituelles :

<link rel="stylesheet" href="/themes/default-bootstrap/css/modules/blocktopmenu/css/superfish-modified.css" type="text/css" media="all" />
		<script type="text/javascript">
var CUSTOMIZE_TEXTFIELD = 1;
var FancyboxI18nClose = 'Close';
...
var usingSecureMode = false;
var wishlistProductsIds = false;
</script>

		<script type="text/javascript" src="/js/jquery/jquery-1.11.0.min.js"></script>

Ceci se produit à chaque fois qu'on souhaite changer la langue, via depuis le module de langue par exemple.

 

Une fois la langue en cookie, ceci ne se produit plus.

 

Je n'arrive pas à trouver pourquoi, sachant que ça fonctionne très bien sur PS < 1.6.0.11

 

Merci pour ceux qui ont une avis sur le sujet.

 

A+

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

A noter aussi que ce phénomène ne se produit que sur FireFox et pas sur Chrome.

 

Comme s'il s'agissait d'un relation direct avec un cache des données en cookie.

 

Au regard du traitement output du js_def normalement, j'arrive sur une méthode de la classe ./classes/controller/Controller.php, ligne 430 :

	protected function smartyOutputContent($content)
	{
		$this->context->cookie->write();

		$js_tag = 'js_def';
		$this->context->smarty->assign($js_tag, $js_tag);
...

Ce qui est bizarre, c'est que cette méthode est pourtant inchangée depuis la 1.6.0.11 .

Mais il s'agit bien d'une écriture de cookie en amont, et d'une sortie plutôt surprenante en mode verbose : 'js_def'

Edited by DevNet (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...