La version 1.7 apporte une nouveauté intéressante dans le développement des modules : les widgets
Le principe est relativement simple et pratique, vous pouvez à n’importe quel endroit dans un template afficher le contenu de votre module via le code suivant.
Les exemples ci-dessous sont basé sur le module hh_samplemodule ( sur la branche 17 disponible sur github )
{widget name="hh_samplemodule"} |
{widget name="hh_samplemodule"}
Vous pouvez également passer n’importe quel paramètre et le récupérer dans votre code
{widget name="hh_samplemodule" hook="top" var1="test" var2="test2" allvars="test"} |
{widget name="hh_samplemodule" hook="top" var1="test" var2="test2" allvars="test"}
Comment l’implémenter dans votre module :
C’est très simple il suffit d’implémenter l’interface WidgetInterface via le code suivant :
use PrestaShop\PrestaShop\Core\Module\WidgetInterface;
class Hh_Samplemodule extends Module implements WidgetInterface |
use PrestaShop\PrestaShop\Core\Module\WidgetInterface;
class Hh_Samplemodule extends Module implements WidgetInterface
Puis de définir les fonctions renderWiget et getWidgetVariables via le code suivant par exemple
/**
* Affichage du widget
* @param type $hookName
* @param array $configuration : Ensemble des variables du widget
* @return array
*/
public function renderWidget($hookName = null, array $configuration = []) {
//En fonction des variables du widget
//vous pouvez mettre en place des conditions d'affichage
$this->smarty->assign($this->getWidgetVariables($hookName, $configuration));
return $this->display(__FILE__, 'views/templates/widget/sample.tpl');
}
/**
* Récupération des variables du widget
* @param type $hookName
* @param array $configuration
* @return array
*/
public function getWidgetVariables($hookName = null , array $configuration = [] ){
return [
'test' => 'test_var',
'test2'=> 'test_var2'
];
} |
/**
* Affichage du widget
* @param type $hookName
* @param array $configuration : Ensemble des variables du widget
* @return array
*/
public function renderWidget($hookName = null, array $configuration = []) {
//En fonction des variables du widget
//vous pouvez mettre en place des conditions d'affichage
$this->smarty->assign($this->getWidgetVariables($hookName, $configuration));
return $this->display(__FILE__, 'views/templates/widget/sample.tpl');
}
/**
* Récupération des variables du widget
* @param type $hookName
* @param array $configuration
* @return array
*/
public function getWidgetVariables($hookName = null , array $configuration = [] ){
return [
'test' => 'test_var',
'test2'=> 'test_var2'
];
}
…