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"}

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"}

Comment l’implémenter dans votre module :

C’est très simple il suffit d’implémenter l’interface WidgetInterface via le code suivant :

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'
            ];
 
    }