{"id":1388,"date":"2016-07-21T09:22:33","date_gmt":"2016-07-21T07:22:33","guid":{"rendered":"http:\/\/www.h-hennes.fr\/blog\/?p=1388"},"modified":"2016-07-21T09:22:33","modified_gmt":"2016-07-21T07:22:33","slug":"eicmslinks-nouvelles-fonctionnalites","status":"publish","type":"post","link":"https:\/\/www.h-hennes.fr\/blog\/2016\/07\/21\/eicmslinks-nouvelles-fonctionnalites\/","title":{"rendered":"EicmsLinks : nouvelles fonctionnalit\u00e9s."},"content":{"rendered":"<p>Une nouvelle version de mon module prestashop \u00ab\u00a0EicmsLinks\u00a0\u00bb est disponible.<br \/>\nPour rappel ce module rajoute des liens dynamiques dans l&rsquo;\u00e9diteur de texte tinyMce pour les contenus cms ( pages cms, descriptions produits, descriptions cat\u00e9gories)<\/p>\n<ul>\n<li>pages cms<\/li>\n<li>cat\u00e9gories<\/li>\n<li>produit ( lien produit, ou ajout au panier)<\/li>\n<\/ul>\n<p>Pour la description compl\u00e8te vous pouvez lire la page suivante : <a href=\"https:\/\/www.h-hennes.fr\/blog\/prestashop-liens-dynamiques-dans-lediteur-tinymce\/\">https:\/\/www.h-hennes.fr\/blog\/prestashop-liens-dynamiques-dans-lediteur-tinymce\/<\/a><\/p>\n<p>Cette nouvelle version instaure une nouvelle notion de \u00ab\u00a0widgets\u00a0\u00bb qui peuvent \u00e9galement \u00eatre ins\u00e9r\u00e9 directement dans la page cms.<\/p>\n<p>Pour l&rsquo;instant les widgets impl\u00e9ment\u00e9s sont les suivants :<\/p>\n<p>&#8211; <strong>formulaire de login<\/strong> : permets d&rsquo;afficher le formulaire de login dans n&rsquo;importe quelle page cms<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1391\" src=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2016\/07\/login.jpg\" alt=\"Widget login\" width=\"500\" height=\"366\" srcset=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2016\/07\/login.jpg 500w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2016\/07\/login-300x220.jpg 300w\" sizes=\"auto, (max-width: 500px) 100vw, 500px\" \/><\/p>\n<p>&#8211; <strong>liste de produits<\/strong> : permets d&rsquo;afficher une liste de produits dynamique<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1392\" src=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2016\/07\/produits.jpg\" alt=\"Widget produits\" width=\"292\" height=\"500\" srcset=\"https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2016\/07\/produits.jpg 292w, https:\/\/www.h-hennes.fr\/blog\/wp-content\/uploads\/2016\/07\/produits-175x300.jpg 175w\" sizes=\"auto, (max-width: 292px) 100vw, 292px\" \/><\/p>\n<p>Plusieurs options sont disponibles pour ce widget :<br \/>\n-type (new|category|price_drop) : Type de produits \u00e0 afficher<br \/>\n-nb_products : nombre de produits \u00e0 afficher<br \/>\n-id_category : dans le cas d&rsquo;un affichage de produit d&rsquo;une cat\u00e9gorie, identifiant prestashop de la cat\u00e9gorie.<\/p>\n<p>L&rsquo;ajout de cette fonctionnalit\u00e9 a \u00e9t\u00e9 r\u00e9alis\u00e9e de mani\u00e8re \u00e0 pouvoir rajouter tr\u00e8s facilement des nouveaux widgets.<br \/>\nNous allons voir ensemble comment proc\u00e9der.<\/p>\n<p>1) <strong>Exemple minimal : sans variables sp\u00e9cifiques<\/strong><\/p>\n<p>Pour commencer il faut cr\u00e9er une nouvelle classe WidgetName.php dans le dossier \u00ab\u00a0classes\u00a0\u00bb avec le contenu suivant<\/p>\n<pre lang=\"php\" escaped=\"true\">class WidgetName extends Widget{\r\n\r\n\/\/Nom du fichier template \u00e0 utiliser pour l'affichage ( \u00e0 cr\u00e9er dans view\/widgets)\r\npublic $template = 'template.tpl';\r\n\r\n\/\/Fonction n\u00e9cessaire uniquement si vous souhaitez assigner des variables smarty\r\n\/**\r\n* Pr\u00e9paration du contenu\r\n*\/\r\npublic function initContent() {\r\nparent::initContent();\r\n\r\n$this-&gt;context-&gt;smarty-&gt;assign('test_var','contenu de ma var de test');\r\n}\r\n}\r\n<\/pre>\n<p>Cr\u00e9er ensuite votre fichier de template ( view\/widgets\/template.tpl)<\/p>\n<pre lang=\"html\" escaped=\"true\">&lt;p&gt;Affichage de mon widget de test&lt;\/p&gt;\r\n&lt;p&gt;{$test_var}&lt;\/p&gt;\r\n<\/pre>\n<p>Votre widget est ensuite bien list\u00e9, et lors de son insertion votre contenu est int\u00e9gr\u00e9 \ud83d\ude42<\/p>\n<p><strong>2) Exemple plus complet : Utilisation de variables<\/strong><\/p>\n<p>Les widgets permettent \u00e9galement de d\u00e9finir des variables personnalis\u00e9es.<br \/>\nCelle-ci doivent \u00eatre int\u00e9gr\u00e9e manuellement dans le code.<\/p>\n<p>Voici quelques exemples pour le widget des produits :<\/p>\n<pre lang=\"html\" escaped=\"true\">{{widget name=\"WidgetProducts\" nb_products=\"8\" bad_attribute=\"test\"}}\r\n{{widget name=\"WidgetProducts\" nb_products=\"3\" type=\"price_drop\"}}\r\n{{widget name=\"WidgetProducts\" nb_products=\"6\" type=\"category\" id_category=\"8\"}}\r\n<\/pre>\n<p>Dans le code voici comment g\u00e9rer ces options,( en partant du meme exemple que pr\u00e9c\u00e9dement)<\/p>\n<pre lang=\"php\" escaped=\"true\">class WidgetName extends Widget{\r\n\r\n\/\/Listes des param\u00e8tres autoris\u00e9s pour votre widget, les options non autoris\u00e9es ne seront pas trait\u00e9es.\r\nprotected static $_allowed_params = array('option1','option2');\r\n\r\n\/\/Nom du fichier template \u00e0 utiliser pour l'affichage ( \u00e0 cr\u00e9er dans view\/widgets)\r\npublic $template = 'template.tpl';\r\n\r\n\/\/Fonction n\u00e9cessaire uniquement si vous souhaitez assigner des variables smarty\r\n\/**\r\n* Pr\u00e9paration du contenu\r\n*\/\r\npublic function initContent() {\r\nparent::initContent();\r\n\r\n\/\/Les options du widget sont automatiquement disponibles dans la variable de classe $_datas;\r\n\/\/Vous pouvez faire tous les traitements souhait\u00e9s\r\nif ( $this-&gt;_datas['option1']){\r\n\/\/Faire traitement sp\u00e9cifique\r\n}\r\n\r\n$this-&gt;context-&gt;smarty-&gt;assign('test_var','contenu de ma var de test');\r\n}\r\n}\r\n<\/pre>\n<p>Voici comment appeller ce widget :<\/p>\n<pre lang=\"html\" escaped=\"true\">{{widget name=\"WidgetName\" option1=\"maVar\" option2=\"test\"}}\r\n{{widget name=\"WidgetName\" option1=\"maVar\" option2=\"test\" option3=\"test\"}} &lt;!-- Dans ce cas option3 ne sera pas trait\u00e9e car pas authoris\u00e9e --&gt;\r\n<\/pre>\n<p>Le module est toujours dispo sur github : <a href=\"https:\/\/github.com\/nenes25\/prestashop_eicmslinks\">https:\/\/github.com\/nenes25\/prestashop_eicmslinks<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Une nouvelle version de mon module prestashop \u00ab\u00a0EicmsLinks\u00a0\u00bb est disponible. Pour rappel ce module rajoute des liens dynamiques dans l&rsquo;\u00e9diteur de texte tinyMce pour les contenus cms ( pages cms, descriptions produits, descriptions cat\u00e9gories) pages cms cat\u00e9gories produit ( lien produit, ou ajout au panier) Pour la description compl\u00e8te vous pouvez lire la page suivante [&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":[110,345,104,386],"class_list":["post-1388","post","type-post","status-publish","format-standard","hentry","category-prestashop-2","tag-cms","tag-eicmslinks","tag-prestashop","tag-widget"],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1388","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=1388"}],"version-history":[{"count":4,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1388\/revisions"}],"predecessor-version":[{"id":1395,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/posts\/1388\/revisions\/1395"}],"wp:attachment":[{"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/media?parent=1388"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/categories?post=1388"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.h-hennes.fr\/blog\/wp-json\/wp\/v2\/tags?post=1388"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}