N'hésitez pas à me le signaler si nécessaire via le formulaire de contact.
Une nouvelle version de mon module prestashop « EicmsLinks » est disponible.
Pour rappel ce module rajoute des liens dynamiques dans l’éditeur de texte tinyMce pour les contenus cms ( pages cms, descriptions produits, descriptions catégories)
- pages cms
- catégories
- produit ( lien produit, ou ajout au panier)
Pour la description complète vous pouvez lire la page suivante : https://www.h-hennes.fr/blog/prestashop-liens-dynamiques-dans-lediteur-tinymce/
Cette nouvelle version instaure une nouvelle notion de « widgets » qui peuvent également être inséré directement dans la page cms.
Pour l’instant les widgets implémentés sont les suivants :
– formulaire de login : permets d’afficher le formulaire de login dans n’importe quelle page cms
– liste de produits : permets d’afficher une liste de produits dynamique
Plusieurs options sont disponibles pour ce widget :
-type (new|category|price_drop) : Type de produits à afficher
-nb_products : nombre de produits à afficher
-id_category : dans le cas d’un affichage de produit d’une catégorie, identifiant prestashop de la catégorie.
L’ajout de cette fonctionnalité a été réalisée de manière à pouvoir rajouter très facilement des nouveaux widgets.
Nous allons voir ensemble comment procéder.
1) Exemple minimal : sans variables spécifiques
Pour commencer il faut créer une nouvelle classe WidgetName.php dans le dossier « classes » avec le contenu suivant
class WidgetName extends Widget{ //Nom du fichier template à utiliser pour l'affichage ( à créer dans view/widgets) public $template = 'template.tpl'; //Fonction nécessaire uniquement si vous souhaitez assigner des variables smarty /** * Préparation du contenu */ public function initContent() { parent::initContent(); $this->context->smarty->assign('test_var','contenu de ma var de test'); } } |
Créer ensuite votre fichier de template ( view/widgets/template.tpl)
<p>Affichage de mon widget de test</p> <p>{$test_var}</p> |
Votre widget est ensuite bien listé, et lors de son insertion votre contenu est intégré 🙂
2) Exemple plus complet : Utilisation de variables
Les widgets permettent également de définir des variables personnalisées.
Celle-ci doivent être intégrée manuellement dans le code.
Voici quelques exemples pour le widget des produits :
{{widget name="WidgetProducts" nb_products="8" bad_attribute="test"}} {{widget name="WidgetProducts" nb_products="3" type="price_drop"}} {{widget name="WidgetProducts" nb_products="6" type="category" id_category="8"}} |
Dans le code voici comment gérer ces options,( en partant du meme exemple que précédement)
class WidgetName extends Widget{ //Listes des paramètres autorisés pour votre widget, les options non autorisées ne seront pas traitées. protected static $_allowed_params = array('option1','option2'); //Nom du fichier template à utiliser pour l'affichage ( à créer dans view/widgets) public $template = 'template.tpl'; //Fonction nécessaire uniquement si vous souhaitez assigner des variables smarty /** * Préparation du contenu */ public function initContent() { parent::initContent(); //Les options du widget sont automatiquement disponibles dans la variable de classe $_datas; //Vous pouvez faire tous les traitements souhaités if ( $this->_datas['option1']){ //Faire traitement spécifique } $this->context->smarty->assign('test_var','contenu de ma var de test'); } } |
Voici comment appeller ce widget :
{{widget name="WidgetName" option1="maVar" option2="test"}} {{widget name="WidgetName" option1="maVar" option2="test" option3="test"}} <!-- Dans ce cas option3 ne sera pas traitée car pas authorisée --> |
Le module est toujours dispo sur github : https://github.com/nenes25/prestashop_eicmslinks