Blogspx

Projet spx pour booster pluxml

Vous êtes ici : accueil » article » Créer un plugin widget pour spxdatas

Créer un plugin widget pour spxdatas

Rédigé par je-evrard / 01 août 2014 / 3 commentaires

A partir de la version 1.60 de spxdatas, il est possible de créer des plugins qui viennent s'ajouter dans la partie widget de spxdatas.

C'est un tournant majeur pour spxdatas, avec l'accueil de plugins externes, il n'y a plus de limite à la création de widget !

Nous allons voir ensemble comment créer un plugin widget de A à Z.

Comment créer un plugin widget ?

Un plugin widget est tout d'abord un plugin dans pluxml, il doit donc être déclaré comme tout plugin dans le dossier plugins.

La première chose à faire est une déclaration le fichier de construction du plugin.


public function __construct($default_lang) {
    # Appel du constructeur de la classe plxPlugin (obligatoire)
    parent::__construct($default_lang);
    $this->setParam('spxdatas_widget', '1', 'string');
}

Le paramètre "spxdatas_widget = 1" va permettre au plugin spxdatas de savoir que votre plugin est un plugin de type widget. C'est la première chose à faire.

Ensuite, il va falloir créer un dossier spxdatas à la racine de votre plugin avec une hierarchie spécifique. Voici a quoi ressemble la structure d'ensemble.

Le dossier icon contient une image qui permettra l'affichage et la personnalisation dans la partie widget.

Le dossier table contient tous les éléments pour définir le widget et "alimenter" en quelque sorte spxdatas.

Dans ce dossier on trouve notamment deux parties :

  • un fichier table.php correspondant description du widget au format xml en terme de structure
  • un dossier table_loc contenant les fichiers de traduction du widget

Comment créer l'administration du widget ?

L'administration du widget est crée tout simplement par lecture du fichier se trouvant dans :

  • monwidgetplugin/spxdatas/table/table.php

Ce fichier table.php contient une description au format xml du widget.

Voici par exemple la description xml du widget spxwpolaroid :

<table name="spxwpolaroids" maxparam="2" groupe="spxwpolaroid" tableuserlevel="0,1,2,3,4" rightCMDlevel="0:111,1:111,2:111,3:111,4:111" >
    <description><![CDATA[<p>List of polaroid</p>]]></description>
    <column>
        <parameter name="title" type="cdata" option="textinput/30/100" ></parameter>
        <parameter name="polaroid_content" type="cdata" option="subtable/spxwpolaroid" >
        </parameter>
    </column>
</table>
<table name="spxwpolaroid" maxparam="3" groupe="spxwpolaroid" type="subtable" order="true" rightCMDlevel="0:111,1:111,2:111,3:111,4:111" >
<description><![CDATA[<p>Your polaroid</p>]]></description>
    <column>
        <parameter name="title" type="cdata" option="textinput/30/100" ></parameter>
        <parameter name="image" type="cdata" option="image" ></parameter>
        <parameter name="dummy" type="string" option="boolean"></parameter>
        <parameter name="bt_url" type="cdata" option="textinput/30/100" ></parameter>
        <parameter name="bt_blank" type="string" option="boolean"></parameter>
        <parameter name="polaroidback" type="cdata" option="textarea/40/10" ></parameter>
    </column>
</table>

Comme on peux le voir ic la description du widget est faite en deux parties (2 tables).

  • table spxwpolaroids : permet d'avoir le titre du polaroid et un lien vers une autre table
  • table spxwpolaroid : une sous table permet la description du polaroid (titre, image, url...)

Je ne vais pas ici faire un tutoriel sur la construction de la table. Le plugin spxdatas comporte une aide détaillée sur le sujet et de nombreux autres articles viendront enrichir la documentation obscure ou absente.

A noter : la structure du xml est particulière est ne comporte pas de balise encadrant les tables.

Bien sur, il est tout à fait possible de générer ce fichier à partir de la configuration de votre plugin widget. C'est ce que fait spwunslider et spxwpolaroid.

Pourquoi générer le fichier table.php ?

Il peux être utille, par exemple, de changer les droits de l'administration du widget (spxdatas le permet). Consulter le documentation de spxdatas pour plus de détails.

Les traductions du widget

l'administration des widget peut-être traduite en deux langues pour le moment (anglais et français).

Pour cela il suffit de créer des fichier de traductions :

  • français dans monpluginwidget/spxdatas/table/table_loc/fr/admin.php
  • anglais dans monpluginwidget/spxdatas/table/table_loc/en/admin.php

Que contiennent ces fichiers ?

Exemple pour l'administration française du plugin spxpolaroïd


<?php
$LANG = array(
# GROUPES
'L_GROUPE_SPXWPOLAROID_TITLE' => '<img src="plugins/spxwpolaroid/spxdatas/icon/Slideshow.png" width="20px" height="20px" >Polaroid',
# TABLE
'L_TABLE_SPXWPOLAROIDS_TITLE' => 'Polaroid',
'L_TABLE_SPXWPOLAROIDS_DESCRIPTION' => '<p>Adminstration de vos polaroids.</p>',
# ACTION TITLE
'L_TABLE_SPXWPOLAROIDS_ACTIONTITLE' => '',
# COLUMN
'L_TABLE_COLUMN_SPXWPOLAROIDS_TITLE_HIGHLIGHTTITLE' => '',
'L_TABLE_COLUMN_SPXWPOLAROIDS_TITLE_TITLE' => 'Titre',
'L_TABLE_COLUMN_SPXWPOLAROIDS_TITLE_HELP' => 'Donner un titre a votre polaroid.',
# COLUMN
'L_TABLE_COLUMN_SPXWPOLAROIDS_POLAROID_CONTENT_HIGHLIGHTTITLE' => '',
'L_TABLE_COLUMN_SPXWPOLAROIDS_POLAROID_CONTENT_TITLE' => 'Accès au contenu',
'L_TABLE_COLUMN_SPXWPOLAROIDS_POLAROID_CONTENT_HELP' => 'Cliquer sur éditer pour créer ou modifier le contenu de votre polaroid',
# TABLE
'L_TABLE_SPXWPOLAROID_TITLE' => 'Polaroid',
...
);
?>

Ce fichier contient en fait un tableau php de traduction. Les noms d'association ont leur importance et obéissent à une logique codifiée.

  • Attention : le codage est en majuscule et séparé par le caractère "_"
  • Remplace xxx par le nom de la table : ex SPXWPOLAROID
  • Remplace yyy par le nom de la colonne : ex IMAGE
code note
L_GROUPE_xxx_TITLE  Nom du groupe
L_TABLE_xxx_DESCRIPTION  Description de ma table
L_TABLE_xxx_ACTIONTITLE  Description de mon action (réservé pour plus tard)
L_TABLE_COLUMN_xxx_yyy_HIGHLIGHTTITLE  Texte de séparation entre deux colonnes (dans les options du widget)
L_TABLE_COLUMN_xxx_yyy_TITLE  Nom de ma colonne dans ma table
L_TABLE_COLUMN_xxx_yyy_HELP  Aide de ma colonne dans ma table

 Il est possible de générer ce fichier à partir de la configuration du plugin widget. Voir l'exemple spxwpolaroid ou spxwunslider.

Comment récupérer les données de l'administration coté client ?

Tout d'abord nous allons déclarer un hook dans le constructeur du plugin.


$this->addHook('spxwpolaroid::getPolaroidID', 'getUnsliderID');

Puis nous construisons la fonction qui va permettre de récuprérer les données du widget.

 

 

3 commentaires

#1 samedi 18 octobre 2014 @ 11:46 Djb a dit :

super travail, merci encore

#2 lundi 27 octobre 2014 @ 09:09 je-evrard a dit :

Merci. Je vais étoffer le blog au fur et à mesure des avancées des différents plugins.

#3 vendredi 27 mars 2015 @ 16:30 David a dit :

De dire sinon bravo pour la pertinence

Écrire un commentaire

 Se rappeler de moi sur ce site

Quelle est la quatrième lettre du mot otzic ? :