Jump to content

[Résolu] Récupérer Variable D'un Module Vers Un Autre Module...


Recommended Posts

Bonjour

Je suis entrain de m'essayer à la création - modification - d'un module ...

J'ai créé une variable dans ce module :

 

global $cookie;
                $smarty->assign(array(
                    'MessageTop' => $message = Configuration::get('MessageTop_text', $cookie->id_lang)
                ));    
            
            return $this->display(__FILE__, 'montop.tpl');

 

Cette dernière s'affiche ou je veux dans mon template ... Nickel.

Mais voudrais pouvoir l'utiliser dans le fichier php d'un autre module ...

 

Pourriez vous m'indiquer la marche à suivre  ...

 

J'ai bien pensé à utiliser $smarty->get_template_vars('MessageTop') mais soit je m'y prends mal soit ce n'est pas possible en tout cas je n'y arrive pas .

 

D'avance merci à vous ...
            
   

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

Bonjour,

 

vous développez votre module pour quelle version d ePRestashop car le code semble correspondre à de vielles version avant 1.5.

 

Sinon si vous arrivez à appeler une variable dans ce module quel est le soucis de faire exactement le même chose pour l'appeler dans un autre module ????

 

et pour l'assign smarty, vous comptez dans le code php réutiliser la variable $message ? car si ce n'est pas le cas vous pouvez retirer le $message = qui en sert strictement à rien.

Link to comment
Share on other sites

Je suis en version 1.6.1.2

 

MonModule me sert à creer un petit texte à l'aide d'un editeur html : TinyMce... et à afficher ce texte sur le front dans divers Hook

 

J'ai don créé $MessageTop dans monmodule.php et je parviens à afficher celui-ci grâce à {$MessageTop} dans MonModule.tpl

 

Maintenant j'aimerai "simplement" pouvoir utiliser cette même variable dans module2.php ...

 

Je parviens à afficher {$MessageTop} dans module2.tpl mais vu comment est fichu module2 je ne peux pas utiliser module2.tpl pour afficher {$MonMessage} à l'endroit désiré,

 

l'affichage de ce module est surtout généré dans module2.php ... donc c'est pourquoi j'ai tenté d'ajouter dans module2.tpl

 

{assign var='MonMessage'  value='$MessageTop} et ensuite d'appeler cela dans module2.php avec :

 

echo  $this->smarty->getTemplateVars('MonMessage'); ou

 

echo $this->smarty->get_template_vars('MonMessage'); ou

 

echo $smarty->getTemplateVars('MonMessage');

 

Les 2 derniers me génèrent une page blanche mais le 1er ne m'affiche pas ma variable !

 

En espérant avoir été plus clair

 

Edit : Pour Coesos ... oui MonModule s'affiche bien avant module2 car dans module2.tpl je parviens à afficher la variable créée dans MonModule

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

Bon, j'ai beau cherché je ne comprends vraiment pas ou est le soucis.

 

Dans modules un vous avec un backoffice qui s'amuse à créer la variable MessageTop_text dans la table configuration.

 

vous récupérez cette variable ainsi pour l'afficher dans le module 1.

$smarty->assign('MessageTop', Configuration::get('MessageTop_text', $cookie->id_lang));

et, pour moi il suffit de faire exactement la même chose dans le module 2 car votre variable, créée par le module 1 n'est absolument pas modifié par le module 2 qui ne sert qu'à afficher (on se demande pourquoi faire 2 modules pour afficher une données identique à 2 endroits différents alors qu'il suffirait de greffer le module 1 sur un autre hook).

Link to comment
Share on other sites

Qu'entendez-vous par " il suffit de faire exactement la même chose dans le module 2 " recréer tout le script php de MonModule dans module2???

Les 2 modules n'affichent absolument pas la même chose ... MonModule affiche mon texte alors que Module2 affiche un menu et dans ce menu je veux rajouter mon petit texte à cet endroit de module2.php - voir dernière ligne du script -

switch (Tools::substr($item, 0, Tools::strlen($value[1])))
			{
				case 'CAT':
					$catetitle = Tools::substr($item, 0, Tools::strlen($value[1]));
					$con_grid = Configuration::get('uhu_modvalue_'.$this->mod_name.'_0');
					$adv_grid = Configuration::get('uhu_modvalue_'.$this->mod_name.'_1');

					$id_lang = $id_lang ? (int)$id_lang : (int)Context::getContext()->language->id;
					$category = new Category((int)$id, (int)$id_lang);

					if ($category->level_depth > 1)
						$category_link = $category->getLink();
					else
						$category_link = $this->context->link->getPageLink('index');

					if (is_null($category->id))
						continue;

					$is_intersected = array_intersect($category->getGroups(), $this->user_groups);
					// filter the categories that the user is allowed to see and browse
					if (!empty($is_intersected))
					{
						$this->menu .= '<li class="nav_li cat">';
						$this->menu .= '<a class="nav_a roll" href="'.Tools::HtmlEntitiesUTF8($category_link).'" title=""><span data-title="'.$category->name.'">'.$category->name.'</span></a>';
						$this->menu .= '<div class="nav_pop col-md-12">';
						$this->menu .= '<div><p id="MessageTopMenu">'.$MessageTop.'</p></div>';
						

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

Pfffff comment répondre lorsque l'on ne donne pas  un centième du problème !!!

 

oui il suffit de récupérer la variable !

 

à mon avis vous ne comprenez pas vraiment le concept et les codes que vous collez dans ces scripts.

$this->menu .= '<div><p id="MessageTopMenu">'.Configuration::get('MessageTop_text', $cookie->id_lang).'</p></div>';
Link to comment
Share on other sites

Désolé mais j'ai essayé de faire ce que vous indiquez c'est à dire : $this->menu .= '<div><p id="MessageTopMenu">'.Configuration::get('MessageTop_text', $cookie->id_lang).'</p></div>'; dès le début mais cela ne fonctionne pas !!!

 

Pourquoi répondez-vous à mon post si c'est pour prendre ce ton hautain et supérieur ???

Je ne viens pas ici pour me faire agresser mais juste pour avoir un coup de main de personnes ... qui justement si connaissent mieux que moi... et je ne vois pas en quoi vous n'avez eu qu'1centième du problème ... j'ai essayer d'être le plus clair possible peut-être que je n'y suis pas parvenu mais ce n'est pas une raison pour me prendre de haut ainsi...

Link to comment
Share on other sites

OK j'ai réussi ... à la place de :

Configuration::get('MessageTop_text', $cookie->id_lang)

J'ai mis:

Configuration::get('MessageTop_text', $this->context->language->id)

 

Je pense que j'utilisais un vieux code comme vous le disiez en début de post alors que j'étais en 1.6.1.2.

 

Cela fonctionne comme je le souhaite ... par contre je ne comprends pas ma "value" dans ps_configuration pour MessageTop_text est toujours à NULL ... où est donc stockée ma variable alors ??? ... vraiment j'chuis pas doué !!

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...