{"id":1548,"date":"2017-06-05T21:06:50","date_gmt":"2017-06-05T19:06:50","guid":{"rendered":"https:\/\/www.h-hennes.fr\/blog\/?p=1548"},"modified":"2018-11-22T18:12:55","modified_gmt":"2018-11-22T16:12:55","slug":"prestashop-1-7-les-widgets","status":"publish","type":"post","link":"https:\/\/www.h-hennes.fr\/blog\/2017\/06\/05\/prestashop-1-7-les-widgets\/","title":{"rendered":"Prestashop 1.7 : Les widgets"},"content":{"rendered":"<p>La version 1.7 apporte une nouveaut\u00e9 int\u00e9ressante dans le d\u00e9veloppement des modules : les <strong>widgets<\/strong><\/p>\n<p>Le principe est relativement simple et pratique, vous pouvez \u00e0 n&rsquo;importe quel endroit dans un template afficher le contenu de votre module via le code suivant.<br \/>\nLes exemples ci-dessous sont bas\u00e9 sur le module <strong>hh_samplemodule<\/strong> ( sur la branche 17 disponible sur github )<\/p>\n<pre lang=\"smarty\" escaped=\"true\">{widget name=\"hh_samplemodule\"} \r\n<\/pre>\n<p>Vous pouvez \u00e9galement passer n&rsquo;importe quel param\u00e8tre et le r\u00e9cup\u00e9rer dans votre code<\/p>\n<pre lang=\"smarty\" escaped=\"true\">{widget name=\"hh_samplemodule\" hook=\"top\" var1=\"test\" var2=\"test2\" allvars=\"test\"} \r\n<\/pre>\n<p><strong>Comment l&rsquo;impl\u00e9menter dans votre module :<\/strong><\/p>\n<p>C&rsquo;est tr\u00e8s simple il suffit d&rsquo;impl\u00e9menter l&rsquo;interface WidgetInterface via le code suivant :<\/p>\n<pre lang=\"php\" escaped=\"true\">\r\nuse PrestaShop\\PrestaShop\\Core\\Module\\WidgetInterface;\r\nclass Hh_Samplemodule extends Module implements WidgetInterface\r\n<\/pre>\n<p>Puis de d\u00e9finir les fonctions <strong>renderWiget<\/strong> et <strong>getWidgetVariables<\/strong> via le code suivant par exemple<\/p>\n<pre lang=\"php\" escaped=\"true\"> \/**\r\n     * Affichage du widget\r\n     * @param type $hookName\r\n     * @param array $configuration : Ensemble des variables du widget\r\n     * @return array\r\n     *\/\r\n    public function renderWidget($hookName = null, array $configuration = []) {\r\n        \/\/En fonction des variables du widget \r\n        \/\/vous pouvez mettre en place des conditions d'affichage\r\n        $this-&gt;smarty-&gt;assign($this-&gt;getWidgetVariables($hookName, $configuration));\r\n        return $this-&gt;display(__FILE__, 'views\/templates\/widget\/sample.tpl');\r\n\r\n    }\r\n\r\n    \/**\r\n     * R\u00e9cup\u00e9ration des variables du widget\r\n     * @param type $hookName\r\n     * @param array $configuration\r\n     * @return array\r\n     *\/\r\n    public function getWidgetVariables($hookName = null , array $configuration = [] ){\r\n\r\n        return  [\r\n            'test' =&gt; 'test_var',\r\n            'test2'=&gt; 'test_var2'\r\n            ];\r\n\r\n    }\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>La version 1.7 apporte une nouveaut\u00e9 int\u00e9ressante dans le d\u00e9veloppement des modules : les widgets Le principe est relativement simple et pratique, vous pouvez \u00e0 n&rsquo;importe quel endroit dans un template afficher le contenu de votre module via le code suivant. Les exemples ci-dessous sont bas\u00e9 sur le module hh_samplemodule ( sur la branche 17 [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[245],"tags":[483,492,386],"class_list":["post-1548","post","type-post","status-publish","format-standard","hentry","category-prestashop-2","tag-prestashop-1-7","tag-smarty","tag-widget","prestashop-1-7","prestashop-1-7-4","prestashop-1-7-6","prestashop-1-7-7","prestashop-1-7-8","prestashop-8-0"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1548","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/comments?post=1548"}],"version-history":[{"count":4,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1548\/revisions"}],"predecessor-version":[{"id":1778,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1548\/revisions\/1778"}],"wp:attachment":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/media?parent=1548"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/categories?post=1548"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/tags?post=1548"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}