Udt base

De Cms Made Simple France
Aller à : navigation, rechercher

Qu'est ce qu'une UDT ?

Les balises personnalisées (appelées "tags" utilisateurs, ou UDT soit User Defined Tags en anglais) sont un moyen très simple d'insérer du code PHP dans votre site. Pour les utiliser, Il suffit de créer une nouvelle balise et d'y coller votre code PHP (en retirant "<?php" et "?>"). Vous pouvez alors utiliser les balises smarty en utilisant la syntaxe suivante : {tag_name}

L'installation par défaut permet l'utilisation d'une balise prédéfinie, que vous pouvez exploiter en utilisant {user_agent}

Dans quels cas utiliser une UDT ?

CmsMadeSimple permet d'utiliser 3 grands type d'extensions : les plugins, les UDT et les modules.

Les Balises Utilisateurs : elles sont parfaites pour insérer vos propres petits scripts php (un compteur de visite perso par exemple) dans CmsMadeSimple de manière sécurisée afin de pouvoir les appeler par la suite dans n'importe quelle page de votre site (ou dans toutes d'un coup)

Les Modules : extensions des Balises Utilisateurs, sont là pour gérer les scripts php bien plus conséquents et permettent ainsi d'apporter des solutions aux besoins bien plus complexes qu'un petit compteur : une galerie de photos, un chat de discussion, un blog, un site d'E-commerce. Notez que seuls les modules sont capables de présenter une interface dans le panneau d'administration.

Les Plugins : plus rarement choisit, les plugins sont une version allégé des Balises Utilisateur généralement choisit pour proposer une fonctionnalité de modification de contenu (mise en majuscule du texte par exemple). Ils sont utilisés dans CmsMadeSimple le plus souvent via des appels smarty du type {ma_balise} ou {$variable|ma_balise} en cas de modificateur. Notez qu'un Plugin est toujours constitué d'un seul fichier plat dans le répertoire ./plugins ce qui simplifie leur distribution d'un site à un autre, d'un webmaster à un autre.

Utilisation pratique d'une UDT

Comment créer une balise personnalisée

Comme beaucoup de choses dans un CMS, ajouter un nouveau plugin est simple. Pour ajouter votre propre plugin, suivez ces instructions :

  1. L'éditeur de plugin est accessible dans la partie administration et vous devez vous authentifier en tant qu'admin, ou bien en tant qu'un utilisateur disposant des permissions adéquates.
  2. Dans le panneau d'administration, cliquez sur 'Extensions -> balises utilisateurs' en haut du menu déroulant.
  3. En bas de la page, cliquez sur 'Ajouter une balise utilisateur'.
  4. Dans le champ 'Nom' saisissez le nom de votre balise (ce champ ne peut contenir que des lettres, des chiffres ou des underscores). C'est ce que vous devrez saisir à l'intérieur des parenthèses pour ajouter une balise dans une page et donc choisissez un nom représentatif mais pas trop long.
  5. Dans le champ 'Code' saisissez le code PHP qui correspondra à la balise quand la page sera appelée. (Voir partie suivante pour plus d'infos)
  6. Cliquez sur le bouton 'Envoyer'.

Votre première balise personnalisée

Au lieu de se focaliser sur chaque détail d'un plugin ou de PHP, un simple exemple devrait vous aider à démarrer. Comme toutes les introductions à la programmation, nous allons suivre pas à pas les étapes pour essayer d'écrire en premier lieu un script permettant d'afficher "hello world".

Suivez les étapes ci-dessus pour créer un nouveau plugin dont le nom est "helloworld" (sans guillemets) et dans le champs 'Code' saisissez ou copier/coller le code ...

echo 'Hello World!';

Cliquez sur envoyer. Pour tester le module, créez une nouvelle page de contenu (voir Add Content), saisissez "{helloworld}" (sans guillemets) quelque part dans la partie contenu et cliquez sur 'aperçu'. Au lieu de voir afficher {helloworld} vous devriez voir afficher "Hello World!".

La commande echo écrit simplement ce qu'il y à l'intérieur des guillemets et donc nous pouvons aussi utiliser cela pour ajouter du code HTML, ou même du DHTML ou du Javascript.

Essayez maintenant ce code (passez juste le Plugin en edition)

 echo '<h4>Hello World!</h4>';

Testez le de la même façon et vous deviez voir apparaître quelque chose qui ressemble à ceci :

Hello World!

"Mais on peut faire cela directement dans une zone de texte riche !" me direz-vous. Bien sûr, mais les balises sont vraiment très utiles quand vous voulez ajouter des paramètres. Par exemple, si vous essayez de dire bonjour à quelqu'un qui s'appelle Bob, essayez le code suivant :

 echo '<h4>Hello ' . $params['name'] . '!</h4>';

Ceci permet d'ajouter le paramètre "name" à ce plugin ; le contenu du paramètre sera placé ici quand le plugin sera appelé grâce à la balise correspondante. Testez le de la même façon que précédemment en remplaçant "{helloworld}" par "{helloworld name='Bob'}". Vous devriez voir apparaître quelque chose qui ressemble à ceci :

Hello Bob!

C'est juste pour présenter les bases de l'écriture d'un Plugin mais vous pouvez faire des choses vraiment utiles avec la commande echo, les paramètres et un peu d'imagination alors, pensez à ce que vous pourriez faire si vous appreniez le langage PHP ...

Passer le contenu de la page en paramètre

Vous pouvez accéder au contenu de la page au sein d'une balise personnalisée en l'utilisant comme paramètre: Dans votre template:

{content assign=pagecontent}
{table_of_contents thepagecontent="$pagecontent"}

Dans votre balise personnalisée nommé "table_of_contents":

 echo $params['thepagecontent']; // Affiche la page de contenu.

C'est ainsi que vous pouvez parser le contenu d'une page et générer à la volée une table de contenu (tout comme vous pouvez le trouver dans le haut de la page de ce wiki)

Comment récupérer l'url d'une page à partir de l'identifiant du contenu (content_id)

Ceci suppose que votre identifiant de contenu (content_id) est dans la variable $page_content_id :


$hm = cmsms()->GetHierarchyManager();
$curnode =& $hm->getNodeById($page_content_id);
$curcontent =& $curnode->GetContent();
echo 'Page URL: ' . $curcontent->GetURL();

Comment exécuter une balise Smarty à partir d'une balise personnalisée

En faisant comme cela :

$smarty = cmsms()->GetSmarty();
$smarty_data = "{menu}";
echo $smarty->display('string:'.$smarty_data) ;

Le code suivant devrait vous permettre de gérer plusieurs domaines avec une seule installation de CMSMS :

$smarty = cmsms()->GetSmarty(); 
$url = $_SERVER['REQUEST_URI']; 
if(eregi('domain1',$url))
{ 
    $smarty_data = "{menu template='cssmenu.tpl'}";   
}
else if(eregi('domain2',$url))
{ 
    $smarty_data = "{menu template='cssmenu2.tpl'}";  
}
echo $smarty->display('string:'.$smarty_data) ;

Cette partie consiste à créer des scripts et à les appeler à tous moments.

Créer une balise utilisateur

En bas de la page Tags utilisateurs, cliquez sur Ajouter une balise utilisateur. Nommez la par exemple "beta" puis saisissez le code Par exemple :

//Vérifie si on a choisi une valeur ici NomImmeuble
if(isset($_POST['NomImmeuble']) and $_POST['NomImmeuble']!="")
{
//Création de la table avec bordure, centré dans la fenêtre      
echo "<table border=1 width='10'>";           

$valeur = $_POST['NomImmeuble'];
            $reqt = "SELECT * FROM agence WHERE NomImmeuble = '$valeur'";
            $rest = mysql_query($reqt) or die ("Exécution de la requête impossible");
            
            while ($ligne = mysql_fetch_array($rest))
            {
             ....

Pour terminer, il suffit d'appuyer sur ENVOYER. Maintenant que la balise utilisateur est terminée, il suffit d'insérer {beta} dans une page pour appeler le code correspondant.


Supprimer une balise utilisateur

Dans la page des balises utilisateurs, il suffit de cliquer sur la corbeille de la balise en question, pour le supprimer.

Comment renseigner des variables depuis votre balise utilisateur à l'attention de votre page / de votre gabarit

Parfois vous devez proposer des informations préalablement calculées en php depuis une balise utilisateur vers une page ou un gabarit. Pour faire cela il faut ajouter une nouvelle balise nommée "var" et y insérer le code à l'intérieur

$smarty = cmsms()->GetSmarty();
$foo= "test"; // Variable que l'on veut pousser, ici ou l'initialise à "test"
$smarty->assign('foo', $foo); // rend la variable 'foo' visible pour CMSms

Maintenant vous êtes capable d'utiliser cette variable dans vos pages ou votre gabarit via Smarty:

{Var} {* Appelez la balise 'var' avant toute autre chose *}
<p>Le contenu de la variable 'foo' est :{$foo}.</p>

Affichera:

Le contenu de la variable 'foo' est :test

Encore plus d'exemples

Vous trouverez dans la section Partagez votre tag ainsi qu'en dessous d'avantages d'exemples très intéressant pour compléter vos connaissances sur le sujet.