Balises utilisateurs

Partager ses balises personnalisées

Contents


Version simplifiée

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}

Paramètres pour les balises

Vous pouvez passer des paramètres aux balises par exemple

"{image_link src='hedgehog'}"

et le code de la balise correspondante :

echo '<a href="' . $params['src'] . '.jpg" target="_blank">';
echo '<img src="t_' . $params['src'] . '.jpg"></a>';

Version détaillée

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.

I use this so I can parse to the page content to automatically create a table of contents.

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 :

global $gCms;
$hm =& $gCms->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 :

global $gCms;
$smarty = &$gCms->GetSmarty();
$smarty_data = "{menu}";
$smarty->_compile_source('temporary template', $smarty_data, $_compiled );
@ob_start();
$smarty->_eval('?>' . $_compiled);
$_contents = @ob_get_contents();
@ob_end_clean();
echo $_contents;

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

global $gCms;
$smarty = &$gCms->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'}";  
}
$smarty->_compile_source('temporary template', $smarty_data, $_compiled );
@ob_start();
$smarty->_eval('?>' . $_compiled);
$_contents = @ob_get_contents();
@ob_end_clean();
echo $_contents;

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 celà il faut ajouter une nouvelle balise nommée "var" et y insérer le code à l'intérieur

global $gCms;
$smarty = &$gCms->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

Dans la section Partagez votre tag ici vous trouverez d'avantage d'exemples très interessant. (regardez "Check for expire dates")


This page in: English - Deutsch - Español - Français - Italiano - Lietuvių - Nederlands - Norsk - Polski - Česky - Русский - Svenska - Tiếng Việt - عربي - 日本語 简体中文

User Handbook/Admin Panel/Extensions/User Defined Tags/fr

From CMSMS

Arvixe - A CMSMS Partner