Développement et intégration de modules

DataLife Engine fournit des mécanismes pratiques pour intégrer les modifications du script que vous développez. Ces mécanismes permettent de conserver le bon fonctionnement même après la mise à jour du script vers une nouvelle version, car l’intégration s’effectue sans modifier les fichiers du script. Pour connecter vos modules, vous devez ajouter dans n’importe quel modèle concerné la balise suivante :

{include file="engine/modules/mymod.php"}

Ici, /engine/modules/ est le chemin vers le fichier de votre module et mymod.php est le nom du fichier inclus. Les fichiers standards des modules de DataLife Engine se trouvent dans ce dossier, et nous vous recommandons d’utiliser précisément ce répertoire. Ce n’est toutefois pas une obligation : le fichier peut se trouver dans n’importe quel autre dossier du serveur. La seule restriction de sécurité liée à ce type d’intégration est que le dossier contenant le fichier ne doit pas avoir de droits d’écriture (CHMOD 777). Nous vous recommandons également d’utiliser des chemins relatifs pour intégrer les modules. DataLife Engine reconnaît automatiquement les chemins relatifs et intègre ensuite vos modules conformément aux paramètres du script et aux chemins d’installation du script. Vous pouvez ainsi rédiger des instructions universelles pour l’installation de vos modifications.

Vous pouvez également intégrer les fichiers PHP de votre module en leur transmettant différents paramètres, par exemple :

{include file="engine/modules/mymod.php?param=value1&variable2=value2"}

Grâce à ce type d’intégration, vous pouvez rendre vos modifications multifonctionnelles afin qu’elles remplissent des rôles et des fonctions différents selon les contextes d’appel. Les variables transmises seront disponibles dans votre module sous les noms $param et $variable2.

Comme paramètres des modules intégrés, vous pouvez utiliser les balises de modèle du script, à l’exception de l’utilisation de la balise dans le modèle main.tpl et des balises appartenant à ce modèle. Par exemple, si vous ajoutez dans le modèle d’actualité complète la construction {include file="engine/modules/mymod.php?param={news-id}"}, vous pouvez transmettre à votre module tiers l’ID de l’actualité comme paramètre, etc. Attention développeurs : les paramètres transmis au script sont des analogues des paramètres GET de l’URL du navigateur ; lorsque vous choisissez les balises à transmettre, vous devez donc tenir compte des limitations de la chaîne GET. En d’autres termes, vous ne pouvez pas, par exemple, transmettre comme paramètre le contenu complet d’une actualité.

Vous pouvez également utiliser l’intégration de vos propres modules pour remplacer le bloc principal où sont affichées les actualités et autres informations principales. Pour cela, cette balise doit être utilisée conjointement avec les balises [aviable=section]texte[/aviable] et [not-aviable=section]texte[/not-aviable]. La description de ces balises est disponible dans la documentation, dans la section « Affichage des actualités sur les pages ». Vous pouvez utiliser soit la liste standard des sections, soit créer votre propre section du site en la transmettant dans l’URL du navigateur. Prenons un exemple simple. Vous souhaitez ajouter à la liste standard des sections du site votre propre section et y afficher des informations provenant de votre module. Supposons que vous souhaitiez créer une section FAQ. Dans ce cas, il faut écrire dans le modèle main.tpl la construction suivante :

[aviable=faq]
    {include file="engine/modules/mymod.php"}
[/aviable]
[not-aviable=faq]
    {content}
[/not-aviable]

Après cette intégration, en plus du fonctionnement des sections standard du site, lorsque l’adresse http://site.ru/index.php?do=faq est appelée, votre nouvelle section provenant de votre module sera affichée à la place des actualités.

Pour que vos modules affichent des informations exactement à l’endroit du modèle où la balise ci-dessus a été placée, une seule condition importante doit être respectée : l’affichage doit être effectué uniquement via la fonction PHP echo. Prenons l’exemple d’un module très simple. Créons le fichier mymod.php avec le contenu suivant :

<?php
    echo "Module de test";
?>

Lorsque ce fichier est inclus dans le modèle, le texte Module de test apparaîtra à cet emplacement.

Liste des variables et classes DLE que vous pouvez utiliser dans votre module intégré sans déclaration supplémentaire :

$is_logged - contient l’information indiquant si le visiteur est un utilisateur authentifié ou un invité, et prend la valeur true ou false.

$member_id - contient un tableau avec les informations sur l’utilisateur authentifié, y compris toutes les données de son profil.

$db - classe DLE pour travailler avec la base de données.

$tpl - classe DLE pour travailler avec les modèles.

$cat_info - tableau contenant les informations sur toutes les catégories du site.

$config - tableau contenant les informations sur tous les paramètres du script.

$user_group - tableau contenant les informations sur tous les groupes d’utilisateurs et leurs paramètres.

$category_id - contient l’ID de la catégorie que le visiteur consulte actuellement.

$_TIME - contient l’heure courante au format UNIX en tenant compte du décalage défini dans les paramètres du script.

$lang - tableau contenant le texte du pack de langue.

$smartphone_detected - contient l’information indiquant si l’utilisateur consulte le site depuis un smartphone ou un navigateur classique, et prend la valeur true ou false.

$dle_module - contient des informations sur la section du site consultée par l’utilisateur, ou la valeur de la variable do de l’URL du navigateur.

Attention : votre module ne doit que lire les données contenues dans ces variables. Toute modification de leurs valeurs entraînera des dysfonctionnements des fonctionnalités standard du script et un fonctionnement incorrect par la suite.