Jump to content

Ajout du type 'checkbox' dans le options d'AdminTab (Override des helpers BO)


Recommended Posts

Bonjour,

 

Je me suis rendu compte que le type 'checkbox' n'était pas implémenté (enfin si, mais laissé en commentaires) pour la gestion des options des AdminTab. On a le type text, le type select, le type textarea (+rte) mais pas de checkbox.

 

Comme j'en avais besoin, j'ai donc tenté une solution simple (et propre) pour pouvoir les utiliser. Je vous donne donc ma méthode, si jamais ca peut servir à quelqu'un.

 

A noter qu'en plus de mettre les 'checkbox' à disposition sur les AdminTabs, la méthode que je décris permet de mettre en place un override de helper (et accessoirement tout autre template BO) au travers d'un module.

 

 

1. Override de template BO

 

Le template qu'on veut overrider, c'est le template options.tpl qui se trouve dans

admin/themes/default/template/helpers/options/options.tpl.

 

 

Aussi, pour overrider ce template, il faut créer la structure suivante dans le répertoire du module :

views/templates/admin/nom-particulier/helpers/options/options.tpl

 

Le nom-particulier, c'est en fait le nom du controller admin du module, sans le Admin et sans le Controller (convention de nommage donc).

 

En effet, les controlleurs admin des modules sont liés à une convention de nommage stricte. Et si par exemple, mon controlleur admin s'appelle : AdminModulemachinController, le nomparticulier dans l'arborescence ci-dessus sera donc modulemachin.

 

Il est important de souligner que AdminModuleMachinController (majuscules à Module et Machin) ne sera pas en mesure de prendre l'override de template. La notion de majuscules/minuscules est stricte elle aussi.

 

On a donc la structure pour utiliser un override de template BO, on y reviendra plus tard.

 

 

2. Définition de l'option en checkbox

 

Je définis l'option d'AdminTab que je veux en checkbox comme suit (dans le constructeur) :

 

$this->fields_options = array(
'general' => array(
 'title' => $this->l('Contact Form Options'),
 'fields' => array(
  'PS_XLCN_CNCT_AUTHSHOPS' => array(
'title' => $this->l('Authorized Shops for Phone & Fax '),
'desc' => $this->l('Shops allowed to display phone & fax numbers within contact form'),
'type' => 'checkbox',	
'identifier' => 'id_shop',
'choices' => $this->getShops(),
  )
 ),
 'submit' => array()
)
);

 

A noter :

1. qu'il n'y a pas de 'cast'

2. qu'il y a une fonction getShops () particulière pour pouvoir générer mes checkbox avec des id et des value (cf. plus bas)

 

 

3. Options.tpl

 

Dans mon template BO options.tpl, je colle ca :

 

{extends file="helpers/options/options.tpl"}
				{block name="input"}
					{if $field['type'] == 'select'}
						{if $field['list']}
							<select name="{$key}"{if isset($field['js'])} onchange="{$field['js']}"{/if} id="{$key}" {if isset($field['size'])} size="{$field['size']}"{/if}>
								{foreach $field['list'] AS $k => $option}
									<option value="{$option[$field['identifier']]}"{if $field['value'] == $option[$field['identifier']]} selected="selected"{/if}>{$option['name']}</option>
								{/foreach}
							</select>
						{else if isset($input.empty_message)}
							{$input.empty_message}
						{/if}
					{elseif $field['type'] == 'bool'}
						<label class="t" for="{$key}_on"><img src="../img/admin/enabled.gif" alt="{l s='Yes'}" title="{l s='Yes'}" /></label>
						<input type="radio" name="{$key}" id="{$key}_on" value="1" {if $field['value']} checked="checked"{/if}{if isset($field['js']['on'])} {$field['js']['on']}{/if}/>
						<label class="t" for="{$key}_on"> {l s='Yes'}</label>
						<label class="t" for="{$key}_off"><img src="../img/admin/disabled.gif" alt="{l s='No'}" title="{l s='No'}" style="margin-left: 10px;" /></label>
						<input type="radio" name="{$key}" id="{$key}_off" value="0" {if !$field['value']} checked="checked"{/if}{if isset($field['js']['off'])} {$field['js']['off']}{/if}/>
						<label class="t" for="{$key}_off"> {l s='No'}</label>
					{elseif $field['type'] == 'radio'}

						{foreach $field['choices'] AS $k => $v}
							<input type="radio" name="{$key}" id="{$key}_{$k}" value="{$k}"{if $k == $field['value']} checked="checked"{/if}{if isset($field['js'][$k])} {$field['js'][$k]}{/if}/>
							<label class="t" for="{$key}_{$k}"> {$v}</label><br />
						{/foreach}
						<br />
					{elseif $field['type'] == 'checkbox'}
						{foreach $field['choices'] AS $k => $v}
							{assign var=arrayOfValues value=","|explode:$field['value']}								
							<input type="checkbox" name="{$key}[]" id="{$key}{$k}_on" value="{$k|intval}"{if in_array ($k, $arrayOfValues)} checked="checked"{/if}{if isset($field['js'][$k])} {$field['js'][$k]}{/if}/>
							<label class="t" for="{$key}{$k}_on"> {$v}</label><br />
						{/foreach}
						<br />

					{elseif $field['type'] == 'text'}
						<input type="{$field['type']}"{if isset($field['id'])} id="{$field['id']}"{/if} size="{if isset($field['size'])}{$field['size']|intval}{else}5{/if}" name="{$key}" value="{$field['value']|escape:'htmlall':'UTF-8'}" {if isset($field['autocomplete']) && !$field['autocomplete']}autocomplete="off"{/if}/>
						{if isset($field['suffix'])} {$field['suffix']|strval}{/if}
					{elseif $field['type'] == 'password'}
						<input type="{$field['type']}"{if isset($field['id'])} id="{$field['id']}"{/if} size="{if isset($field['size'])}{$field['size']|intval}{else}5{/if}" name="{$key}" value="" {if isset($field['autocomplete']) && !$field['autocomplete']}autocomplete="off"{/if} />
						{if isset($field['suffix'])} {$field['suffix']|strval}{/if}
					{elseif $field['type'] == 'textarea'}
						<textarea name={$key} cols="{$field['cols']}" rows="{$field['rows']}">{$field['value']|escape:'htmlall':'UTF-8'}</textarea>
					{elseif $field['type'] == 'file'}
						{if isset($field['thumb']) && $field['thumb']}
							<img src="{$field['thumb']}" alt="{$field['title']}" title="{$field['title']}" /><br />
						{/if}
						<input type="file" name="{$key}" />
					{elseif $field['type'] == 'price'}
						{$currency_left_sign}<input type="text" size="{if isset($field['size'])}{$field['size']|intval}{else}5{/if}" name="{$key}" value="{$field['value']|escape:'htmlall':'UTF-8'}" />{$currency_right_sign} {l s='(tax excl.)'}
					{elseif $field['type'] == 'textLang' || $field['type'] == 'textareaLang' || $field['type'] == 'selectLang'}
						{if $field['type'] == 'textLang'}
							{foreach $field['languages'] AS $id_lang => $value}
								<div id="{$key}_{$id_lang}" style="margin-bottom:8px; display: {if $id_lang == $current_id_lang}block{else}none{/if}; float: left; vertical-align: top;">
									<input type="text" size="{if isset($field['size'])}{$field['size']|intval}{else}5{/if}" name="{$key}_{$id_lang}" value="{$value|escape:'htmlall':'UTF-8'}" />
								</div>
							{/foreach}
						{elseif $field['type'] == 'textareaLang'}
							{foreach $field['languages'] AS $id_lang => $value}
								<div id="{$key}_{$id_lang}" style="display: {if $id_lang == $current_id_lang}block{else}none{/if}; float: left;">
									<textarea rows="{$field['rows']}" cols="{$field['cols']|intval}"  name="{$key}_{$id_lang}">{$value|replace:'\r\n':"\n"}</textarea>
								</div>
							{/foreach}
						{elseif $field['type'] == 'selectLang'}
							{foreach $languages as $language}
							<div id="{$key}_{$language.id_lang}" style="margin-bottom:8px; display: {if $language.id_lang == $current_id_lang}block{else}none{/if}; float: left; vertical-align: top;">
								<select name="{$key}_{$language.iso_code|upper}">
									{foreach $field['list'] AS $k => $v}
										<option value="{if isset($v.cast)}{$v.cast[$v[$field.identifier]]}{else}{$v[$field.identifier]}{/if}"
											{if $field['value'][$language.id_lang] == $v['name']} selected="selected"{/if}>
											{$v['name']}
										</option>
									{/foreach}
								</select>
							</div>
							{/foreach}
						{/if}
						{if count($languages) > 1}
							<div class="displayed_flag">
								<img src="../img/l/{$current_id_lang}.jpg"
									class="pointer"
									id="language_current_{$key}"
									onclick="toggleLanguageFlags(this);" />
							</div>
							<div id="languages_{$key}" class="language_flags">
								{l s='Choose language:'}<br /><br />
								{foreach $languages as $language}
										<img src="../img/l/{$language.id_lang}.jpg"
											class="pointer"
											alt="{$language.name}"
											title="{$language.name}"
											onclick="changeLanguage('{$key}', '{if isset($custom_key)}{$custom_key}{else}{$key}{/if}', {$language.id_lang}, '{$language.iso_code}');" />
								{/foreach}
							</div>
						{/if}
						<br style="clear:both">
					{/if}
					{if isset($field['required']) && $field['required'] && $field['type'] != 'radio'}
						<sup>*</sup>
					{/if}
					{if isset($field['hint'])}<span class="hint" name="help_box">{$field['hint']}<span class="hint-pointer"> </span></span>{/if}
				{/block}{* end block input *}

 

 

Il s'agit en fait d'une partie du template d'origine. Les modifications se trouvent là :

 

{elseif $field['type'] == 'checkbox'}
						{foreach $field['choices'] AS $k => $v}
							{assign var=arrayOfValues value=","|explode:$field['value']}								
							<input type="checkbox" name="{$key}[]" id="{$key}{$k}_on" value="{$k|intval}"{if in_array ($k, $arrayOfValues)} checked="checked"{/if}{if isset($field['js'][$k])} {$field['js'][$k]}{/if}/>
							<label class="t" for="{$key}{$k}_on"> {$v}</label><br />
						{/foreach}
						<br />

 

 

4. Override de beforeUpdateOptions ()

 

Dans mon controlleur admin du module, j'ajoute ca :

 

public function beforeUpdateOptions() {
 foreach ($this->fields_options as $optionsGroup) {
  foreach ($optionsGroup['fields'] as $fieldName => $fieldConf) {
if ( is_array (Tools::getValue ($fieldName)) )
 $_POST[$fieldName] = implode (',', Tools::getValue ($fieldName));
  }  
 }
}

 

 

5. la fonction getShops ()

 

C'est simplement une fonction qui me permet de placer mes valeurs correctement dans un tableau pour pouvoir générer les checkbox.

 

La forme c'est :

- La valeur (ie. value) du checkbox correspond à un index de tableau (c'est l'id de mon shop dans mon cas)

- Le texte écrit en face de ma case-à-cocher, c'est la valeur en face de l'index

 

Exemple avec mes shops, je dois générer un array comme suit :

array (
[id_shop'] => ['nom_shop'],
[id_shop'] => ['nom_shop'],
[id_shop'] => ['nom_shop'],
[id_shop'] => ['nom_shop'],
...etc
)

Link to comment
Share on other sites

Salut,

 

Super intéressant d'enfin trouver des ressources sur Prestashop 1.5.

Je cherche à savoir comment override un tpl dans l'administration.

Par exemple, le fichier admin/themes/default/template/controllers/products/prices.tpl

Je vois que tu passes par un module pour override les tpl. Est-ce obligatoire ? Existe-t-il une autre manière ?

Link to comment
Share on other sites

Ah...ben enfin une réponse ! Je ne sais pas si ce que je dis parait évident ou au contraire si c'est du chinois, mais j'espérais susciter un poil plus d'enthousiasme ;-)

 

Donc, pour surcharger le product.tpl d'admin, je passerais effectivement par un module. On a malheureusement pas la main via le répertoire d'override ou le répertoire de thème.

 

Ceci dit, il est peut être possible de créer l'override de l'AdminProducts via le répertoire d'override classique et de surcharger l'appel à Smarty en lui passant ton propre template (.tpl). Ceci dit, tu seras obligé de stocker ton template dans un répertoire 'admin' (ou autre) du 'thèmes' ce qui n'est pas forcément joli joli. J'ai pas testé hein.

 

L'autre option (pareil, pas testée non plus) à laquelle je pense c'est donc effectivement créer un module :

- qui override l'AdminProducts (ie. tu créés un AdminProducts.php dans une archi nom_module>controllers>admin>AdminProducts.php)

- change la référence à AdminProducts natif vers l'AdminProducts de ton module (ca c'est jouable via des objets natifs, je pourrais te filer le code stu veux)

- l'AdminProducts étends simplement la classe AdminProducts de base mais elle reste vide

- tu re-créés l'archi views>templates>admin>products>prices.tpl dans ton module

 

C'est à tester, je l'ai pas fait (je ferais ca ce soir pour voir si c'est viable...). Et si ca roule, je posterai un truc ! :-)

Link to comment
Share on other sites

Merci beaucoup.

J'attends avec impatience tes retours la dessus car je suis très curieux des possibilités d'override sur la version 1.5 de Prestashop.

 

Par contre, sous cette même version, je viens de voir qu'il était possible de créer (comme dans le thème du site) un thème pour l'admin, de changer dans "Mes préférences" le thème et ainsi pouvoir modifier comme on le souhaite les tpl. J'imagine que c'est une solution.

Link to comment
Share on other sites

Bon bon bon,

 

j'ai donc testé la chose suivante :

 

1. Post-update du SVN 1.5.x, j'ai créé le template override /override/controllers/admin/templates/products/helpers/form/form.tpl.

 

Il est vide, je devrais donc avoir une page blanche lorsque je clique sur mon menu Produits. Malheureusement, rien ne se passe, le template 'de base' reste celui utilisé.

 

 

Mais, dans la classe Helper (l. 94 - function createTemplate ()) le code teste si

1. le template de base existe puis

2. s'il n'existe pas il cherche dans l'architecture des overrides de template.

 

==>Il me semble que c'est plutot l'inverse qu'il faut faire :

1. je regarde si un override existe, et

2. s'il n'y a pas d'override, je prend le template de base.

 

J'ai donc inversé les tests (if/elseif) et là ca tourne : c'est bien mon template override qui est pris en compte à la place du template de base.

 

 

2. Post update du SVN 1.5.x, j'ai créé le template override /override/controllers/admin/templates/products/prices.tpl mais là rien à faire, ca tourne pas. Je pense que le prices.tpl n'est tout simplement pas appelé par le Helper::createTemplate () mais qu'il s'agit d'une inclusion Smarty, (cf. plus bas, j'ai trouvé la solution)

 

 

A creuser mais pour le moment, je vais sortir mon chien...

Edited by Luc Lérot Freelance (see edit history)
Link to comment
Share on other sites

Bon ca y est, j'override mon prices.tpl en utilisant la version native de Prestashop 1.5.x... enfin, en utilisant le répertoire /override/controllers/admin/templates

 

Ceci dit, je retrouve à nouveau un test qui me semble être inversé en terme de recherche de template :

 

classes/controller/AdminController.php (l.2628)

public function createTemplate($tpl_name)
{

 // Use override tpl if it exists
 // If view access is denied, we want to use the default template that will be used to display an error
 if ($this->viewAccess() && $this->override_folder)
 {
  if (file_exists($this->context->smarty->getTemplateDir(0).'controllers'.DIRECTORY_SEPARATOR.$this->override_folder.$tpl_name))
   return $this->context->smarty->createTemplate('controllers'.DIRECTORY_SEPARATOR.$this->override_folder.$tpl_name, $this->context->smarty);
  if (file_exists($this->context->smarty->getTemplateDir(1).DIRECTORY_SEPARATOR.$this->override_folder.$tpl_name))
   return $this->context->smarty->createTemplate($this->override_folder.$tpl_name, $this->context->smarty);
 }
 return $this->context->smarty->createTemplate($this->context->smarty->getTemplateDir(0).$tpl_name, $this->context->smarty);
}

 

Là, le code regarde si le template prices.tpl (par exemple) existe dans :

[...]prestashop-1.5.x\admin-dev/themes/default\template\controllers\products/prices.tpl

 

et s'il ne le trouve pas, il cherche dans :

[...]prestashop-1.5.x/override/controllers\admin\templates\\products/prices.tpl

 

Mais il me semble bien que c'est l'inverse qu'il faudrait faire. Donc j'ai inversé le test et ca tourne : mon override est bien le template qui est pris pour l'affichage.

 

KittyPaw, je te conseille donc

- d'updater le SVN pour bénéficier du top-moumoutte répertoire templates dans les overrides

- de mettre ton template prices.tpl dans /override/controllers/admin/templates/products/prices.tpl

- d'overrider AdminController.php proprement en reprenant la fonction createTemplate() et en inversant les 2 tests (if) qui sont faits (cf. bout de code ci-dessus)

Link to comment
Share on other sites

Bon, vite fait, je confirme qu'en utilisant un override propre de AdminController.php, ca roule (code testé ci-dessous) :

 

/override/classes/controller/AdminController.php :

class AdminController extends AdminControllerCore
{

public function createTemplate($tpl_name)
{

 // Use override tpl if it exists
 // If view access is denied, we want to use the default template that will be used to display an error
 if ($this->viewAccess() && $this->override_folder)
 {
  if (file_exists($this->context->smarty->getTemplateDir(1).DIRECTORY_SEPARATOR.$this->override_folder.$tpl_name))
   return $this->context->smarty->createTemplate($this->override_folder.$tpl_name, $this->context->smarty);

  if (file_exists($this->context->smarty->getTemplateDir(0).'controllers'.DIRECTORY_SEPARATOR.$this->override_folder.$tpl_name))
   return $this->context->smarty->createTemplate('controllers'.DIRECTORY_SEPARATOR.$this->override_folder.$tpl_name, $this->context->smarty);

 }
 return $this->context->smarty->createTemplate($this->context->smarty->getTemplateDir(0).$tpl_name, $this->context->smarty);
}
}

Link to comment
Share on other sites

Bonjour,

 

Merci d'avoir pris le temps de tester cette fonctionnalité "technique", ce type de retour nous est précieux !

En effet le code original avait pour but de pouvoir ajouter dans le dossier override de nouveaux templates pour des onglets nouveaux ou existants, mais l'utilisation peut être largement plus intéressante en permettant également la surcharge des templates existants !

 

Cordialement,

Link to comment
Share on other sites

Bien joué pour ces changements Luc et d'avoir pris le temps de tester tout ça :D

Et pour continuer dans l'override, je suis en train de regarder si on peut override les js du dossier js à la base de prestashop. Une idée ?

Link to comment
Share on other sites

Ah mais de rien les copains... je reste un presta-fan même si j'ai posté quelques remarques sur la nouvelle architecture MVC ;-)

 

Bon mais alors du coup, je suis un peu paumé moi maintenant, entre la forge, le forum, le topic et le reste. Est-ce que quelqu'un de la team pourrait faire une petit récap ?

 

- Les checkbox dans les helpers du BO vont être ajoutés ?

- Les 'if/elsif' des fonctions createTemplate () vont-ils être inversés ?

Link to comment
Share on other sites

je suis en train de regarder si on peut override les js du dossier js à la base de prestashop. Une idée ?

 

Hmmmm overrider les JS hu ? Une approche que j'aurais perso, ce serait :

 

- Créer un module

- écrire mon JS dans le .js du module

- hooker le module sur le backOfficeHeader (ou nom équivalent, j'ai pas de bd sous la main pour vérifier le nom)

- insérer mon fichier JS via le hookBackOfficeHeader () de mon module (via addJS ())

 

Mais ca, c'est la solution "facile" hein, j'ai pas vraiment fait le tour de toutes les possibilités d'override natives de la 1.5. Peut être que la team nous a concocté un truc...

Edited by Luc Lérot Freelance (see edit history)
Link to comment
Share on other sites

C'est vrai que la c'est pas évident.

Le truc que je voulais faire c'est simplement ajouter des fonctions dans price.js du dossier js. Je cherche la petite bête mais c'est vrai que s'il existe une méthode propre pour éviter de tout perdre lors d'une mise à jour, ça m'arrange ;)

 

Merci pour l'astuce en tout cas.

Link to comment
Share on other sites

Bon, je réponds quand même pour garder le track.

 

Donc, le SVN a bien été mis à jour au niveau des overrides de templates via le répertoire override/controllers/admin/templates. Il est donc désormais possible, en natif, d'overrider les templates BO (helpes, controllers...etc).

 

Par contre, rien vu concernant mes checkbox dans les helpers BO Options.tpl.

Edited by Luc Lérot Freelance (see edit history)
Link to comment
Share on other sites

J'ai fait les tests tout fonctionne correctement. Seul bémol pour moi, es traductions sautent :s

Lorsque je me rend dans l'administration afin de traduire les textes, que j'effectue mes changements et que j'enregistre, non seulement ça ne marche pas mais en plus d'autres traductions sautent. Quelques textes repassent en anglais.

Est-ce pareil pour vous ? ou pour toi Luc ?

Link to comment
Share on other sites

Ouais, les trads c'est pas trop ca effectivement :

 

--> BUG déjà levé sur les traductions de .tpl de module sur thème custom : http://forge.prestashop.com/browse/PSCFV-3305

 

--> Et en 1.4, j'étais déjà embêté, je m'en étais sorti comme ca (cf. 4. Astuces) : http://www.prestashop.com/forums/topic/180312-astuce-overrideextends-dune-admintab-via-un-module/

Link to comment
Share on other sites

  • 4 months later...

Je reviens sur ton tout premier point Luc, l'override d'un helper.

En effet, j'aimererai overrider admin/default/template/helpers/form/form.tpl

 

Seulement, si j'essaye de passer par override/controllers/admin/templates mais rien à faire. Une idée ? J'aimerai éviter de passer par un module car c'est vraiment léger le changement que j'essaye de faire.

Link to comment
Share on other sites

Je reviens sur ton tout premier point Luc, l'override d'un helper.

En effet, j'aimererai overrider admin/default/template/helpers/form/form.tpl

 

Seulement, si j'essaye de passer par override/controllers/admin/templates mais rien à faire. Une idée ? J'aimerai éviter de passer par un module car c'est vraiment léger le changement que j'essaye de faire.

 

C'est normal car ce dossier sert à overrider uniquement le dossier : admin/default/template/controller/

 

Il va falloir que tu override la classe suivante : classes/controller/AdminController.php et sa méthode : renderForm() afin de changer le chemin du form.tpl...

 

Loic.

Link to comment
Share on other sites

True !! (p'tain, sont vraiment rapides ces Ninjas... :-) )

 

Perso, j'ai eu à faire ca pour ré-écrire la gestion des scènes Prestashop 1.5.

 

J'ai overridé le renderForm () de l'admin controller correspondant (AdminScenesController) en utilisant le $this->base_tpl_form.

 

Ceci dit, je voulais utiliser mon propre chemin de stockage du Helper form (_PS_MODULE_DIR_.'nom_module/override/controllers/admin/templates/scenes/helpers/form/form.tpl' pour rester cohérent) et j'ai aussi du overrider la fonction createTemplate () de la classe Helper.

 

Hope that helps.

 

L.

Link to comment
Share on other sites

Ouh !!! le base_folder, j'y toucherai pas perso.

 

Moi ce que j'ai fait dans mon override de la classe Helper, c'est ca :

 

public function createTemplate($tpl_name)
{

 if ($this->override_folder)
 {
  //Luc L. : if $tpl_name is made of a directory path + a file name AND if it exists, use it in priority
  // (required for use of template overrides dynamically, ie. without manually copying templates within /override directory)
  if (file_exists($tpl_name))
$override_tpl_path = $tpl_name;
  //Luc L. END

  else if ($this->context->controller instanceof ModuleAdminController)
$override_tpl_path = $this->context->controller->getTemplatePath().$this->override_folder.$this->base_folder.$tpl_name;
  else if ($this->module)
$override_tpl_path = _PS_MODULE_DIR_.$this->module->name.'/views/templates/admin/_configure/'.$this->override_folder.$this->base_folder.$tpl_name;
  else
  {
if (file_exists($this->context->smarty->getTemplateDir(1).DIRECTORY_SEPARATOR.$this->override_folder.$this->base_folder.$tpl_name))
 $override_tpl_path = $this->context->smarty->getTemplateDir(1).DIRECTORY_SEPARATOR.$this->override_folder.$this->base_folder.$tpl_name;
else if (file_exists($this->context->smarty->getTemplateDir(0).DIRECTORY_SEPARATOR.'controllers'.DIRECTORY_SEPARATOR.$this->override_folder.$this->base_folder.$tpl_name))
 $override_tpl_path = $this->context->smarty->getTemplateDir(0).'controllers'.DIRECTORY_SEPARATOR.$this->override_folder.$this->base_folder.$tpl_name;
  }
 }
 else if ($this->module)
  $override_tpl_path = _PS_MODULE_DIR_.$this->module->name.'/views/templates/admin/_configure/'.$this->base_folder.$tpl_name;
 if (isset($override_tpl_path) && file_exists($override_tpl_path))
  return $this->context->smarty->createTemplate($override_tpl_path, $this->context->smarty);
 else
  return $this->context->smarty->createTemplate($this->base_folder.$tpl_name, $this->context->smarty);
}

 

Alors, JE SAIS que c'est pas joli-joli mais j'avais pas besoin de plus que ca à l'époque.

Edited by Luc Lérot Freelance (see edit history)
Link to comment
Share on other sites

Cela devrait me suffir c'est gentil.

Au début jme disais pourquoi ne pas overrider directement Helper mais effectivement si j'override renderForm dans AdminController et que j'ajoute ton petit bout de code dans la classe Helper, cela devrait le faire.

Encore merci ;)

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