YakaLire Posted August 2, 2012 Share Posted August 2, 2012 Bonjour, J'adapte actuellement un module à partir de celui de "Homeslider" Je reste confronté à la définition de variable PHP dans mon javascript qui doit s'afficher sur le front. J'essaye donc de définir par exemple : var scorepartner = '.$partner->score[$language['id_lang']].' ou var scorepartner = '$partner.score' Directement dans mon fichier .php entre les différentes balises scripts. <script type="text/javascript" src="'.__PS_BASE_URI__.'js/jquery/jquery-ui.will.be.removed.in.1.6.js"></script> <script type="text/javascript" src="jscript/yahoo-dom-event.js"></script> <script type="text/javascript" src="jscript/connection-min.js"></script> <script type="text/javascript" src="jscript/animation-min.js"></script> <script type="text/javascript" src="jscript/ratings.js"></script> <script type="text/javascript"> $(function() { var $myPartners = $("#partners"); $myPartners.sortable({ opacity: 0.6, cursor: "move", update: function() { var order = $(this).sortable("serialize") + "&action=updatePartnersPosition"; $.post("'._PS_BASE_URL_.__PS_BASE_URI__.'modules/'.$this->name.'/ajax_'.$this->name.'.php?secure_key='.$this->secure_key.'", order); } }); $myPartners.hover(function() { $(this).css("cursor","move"); }, function() { $(this).css("cursor","auto"); }); }); </script>'; private function _prepareHook() { $partner2 = array( 'width' => Configuration::get('HOMEPARTNER_WIDTH'), 'height' => Configuration::get('HOMEPARTNERR_HEIGHT'), 'speed' => Configuration::get('HOMEPARTNER_SPEED'), 'pause' => Configuration::get('HOMEPARTNER_PAUSE'), 'loop' => Configuration::get('HOMEPARTNER_LOOP'), ); J'ai essayé également de définir la variable dans le fichier .js de la manière suivante : var scorepartner = '<?php echo "$partner.score" ; ?>'; Les deux premières solutions ne m'affichent plus aucun résultat sur le front (le script est mis en échec). La 3ème j'ai mon code qui s'affiche sur la variable au format texte. Si quelqu'un à une idée de l'endroit et de la manière dont je dois m'y prendre pour faire cette déclaration ? Merci pour vos éclaircissements ! Link to comment Share on other sites More sharing options...
coeos.pro Posted August 2, 2012 Share Posted August 2, 2012 et tout ça sans une trace de smarty !? Link to comment Share on other sites More sharing options...
YakaLire Posted August 2, 2012 Author Share Posted August 2, 2012 Il s'agit juste de bouts de code où j'ai du script private function _prepareHook() { $partner2 = array( 'width' => Configuration::get('HOMEPARTNER_WIDTH'), 'height' => Configuration::get('HOMEPARTNERR_HEIGHT'), 'speed' => Configuration::get('HOMEPARTNER_SPEED'), 'pause' => Configuration::get('HOMEPARTNER_PAUSE'), 'loop' => Configuration::get('HOMEPARTNER_LOOP'), ); $partners = $this->getPartners(true); if (!$partners) return false; $this->smarty->assign('block_partner_ratings_partner', $partners); $this->smarty->assign('block_partner_ratings', $partner2); return true; } public function hookleftColumn() { if(!$this->_prepareHook()) return; $this->context->controller->addJS($this->_path.'js/jquery.bxSlider.min.js'); $this->context->controller->addCSS($this->_path.'bx_styles.css'); $this->context->controller->addJS($this->_path.'js/homeslider.js'); $this->context->controller->addJS($this->_path.'jscript/yahoo-dom-event.js'); $this->context->controller->addJS($this->_path.'jscript/connection-min.js'); $this->context->controller->addJS($this->_path.'jscript/animation-min.js'); $this->context->controller->addJS($this->_path.'jscript/ratings.js'); return $this->display(__FILE__, 'homepartner.tpl'); } Link to comment Share on other sites More sharing options...
math_php Posted August 2, 2012 Share Posted August 2, 2012 Bonjour, Mets SMARTY_DEBUG_CONSOLE à true dans le config.inc.php et a l'url qui affiche ton module ajoute ?SMARTY_DEBUG (pas trouvé pour Prestashop 1.5 Tu auras une pop up avec toutes les variables transmises à Smarty et tu pourras vérifier si tu passes bien les infos. Link to comment Share on other sites More sharing options...
math_php Posted August 2, 2012 Share Posted August 2, 2012 La méthode pour avoir des variables exploitables en javascript : Dans le tpl du module créé (avant ton script qui a besoin de ces variables) <script type="text/javascript"> var scorepartner = {$scorepartner}; </script> Dans le php du module $this->smarty->assign('scorepartner', $scorepartner); C'est comme ça que prestashop transmets les tokens et autres à toutes les pages. Link to comment Share on other sites More sharing options...
YakaLire Posted August 2, 2012 Author Share Posted August 2, 2012 Le debug est activable directement dans l'onglet performance du back sur sur la v1.5 Merci du tuyau en tous cas ! Après l'avoir fait, j'ai pas mes variables principales qui s'y affichent, comme $partner.score, $homepartner.width, $partner.url ... sauf que je les utilise sur mon fichier .tpl et j'ai le résultat demandé. Le truc c'est bien pour implanté ces variables dans mon fichier .js principal pour exploiter les données et ajouter quelques infos sur l'élément qui est créer par le javascript qui je le rappel, pour le moment fonction, mais j'aimerais ajouter un titre au lien qui se forme par javascript en utilisant cette variable créée. var scorepartner = '<?php echo "$partner.score" ; ?>'; ... var a = document.createElement('a'); a.title = scorepartner; ... Link to comment Share on other sites More sharing options...
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now