Widget simple
Créez un widget qui va afficher “Hello, World!”, et en option n’importe quel texte souhaité par l’utilisateur.
Dans Elgg, les widgets sont ces composants que vous pouvez déplacer sur votre page de profil ou le tableau de bord d’administration.
Ce tutoriel suppose que vous connaissez les concepts de base de Elgg tels que :
Vous devriez les revoir si cela devient confus en cours de route.
Contenus
Ajouter le code de la vue du widget
Elgg scanne automatiquement certains répertoires des plugins pour trouver des fichiers spécifiques. Les vues Vues facilitent l’ajout de votre propre code d’affichage, ou la possibilité de faire d’autres choses telles que surcharger le comportement par défaut de Elgg. Pour le moment, nous allons simplement ajouter le code d’affichage pour votre widget. Créez un fichier /views/default/widgets/helloworld/content.php
. “helloworld” sera le nom de votre widget à l’intérieur du plugin hello. Dans ce fichier ajoutez le code :
<?php
echo "Hello, world!";
Ceci va ajouter ces mots au canevas du widget lorsqu’il sera affiché. Elgg prend soin de charger le widget.
Enregistrer votre widget
Elgg a besoin qu’on lui indique explicitement que le plugin contient un widget afin qu’il scanne le répertoire des vues des widgets. Cela se fait en enregistrant le widget dans votre elgg-plugin.php
:
<?php
return [
'widgets' => [
'helloworld' => [
'name' => 'Hello, world!',
'description' => 'The "Hello, world!" widget',
],
],
];
Rendez-vous maintenant sur votre page de profil avec un navigateur web et ajoutez le widget “hello, world”. Il devrait afficher “Hello, world!”.
Note
Pour de vrais widgets, c’est toujours une bonne idée de respecter Internationalisation.
Permettre les personnalisations par l’utilisateur
Cliquez sur le lien d’édition dans la barre d’outils du widget que vous avez créé. Vous allez remarquer que le seul contrôle qu’il vous offre par défaut est celui du niveau d’accès (sur qui peut voir le widget).
Supposez que vous voulez permettre à l’utilisateur de contrôler quel message d’accueil est affiché dans le widget. De la même manière que Elgg charge automatiquement content.php
pour afficher un widget, il charge edit.php
quand un utilisateur tente de modifier un widget. Ajoutez le code suivant dans /views/default/widgets/helloworld/edit.php
:
<div>
<label>Message:</label>
<?php
//This is an instance of the ElggWidget class that represents our widget.
$widget = $vars['entity'];
// Give the user a plain text box to input a message
echo elgg_view('input/text', array(
'name' => 'params[message]',
'value' => $widget->message,
'class' => 'hello-input-text',
));
?>
</div>
Notez la relation entre les valeurs passées aux champs nom “name” et valeur “value” de input/text. Le nom du champ de la boîte de saisie de texte est params[message]
parce que Elgg va automatiquement gérer les variables des widgets placées dans le tableau params
. Le nom de la variable PHP correspondante sera message
. Si nous voulions utiliser le champ greeting
au lieu de message
nous passerions respectivement les valeurs params[greeting]
et $widget->greeting
.
La raison pour laquelle nous définissons l’option “value” du tableau est que ceci indique à la vue d’édition de se souvenir de ce que l’utilisateur a saisi la dernière fois qu’il a modifié la valeur du texte du message.
Maintenant pour afficher le message de l’utilisateur nous devons modifier content.php pour qu’il utilise cette variable message. Éditez /views/default/widgets/helloworld/content.php
et modifiez-le pour :
<?php
$widget = $vars['entity'];
// Always use the corresponding output/* view for security!
echo elgg_view('output/text', array('value' => $widget->message));
Vous devriez maintenant pouvoir saisir un message dans la boîte de texte et le voir apparaître dans le widget.