banniere
Ecrit par leknoppix le 19-06-2011 à 19:06:47
Tutoriel video: création d'un plugin pour cmsms

Dans ce nouveau tutoriel, nous apprendrons à créer un plugin dans le but de personnalisé certaines fonctionnalités. Dans l'exemple de la vidéo, nous apprendrons a affiché dans CMSMS les X tweets via un plugin créé de A à Z.

Sans plus attendre, voici la vidéo:

Voici les 2 fonctions php qui vous serons utile.

Le fonction dateFR:

<?php
function dateFR($time,$mode='long')
{
    setlocale(LC_TIME, 'fr');
    $mois= strftime("%m",  strtotime($time));
    switch ($mois){
    case '1' : $mois = 'Janvier'; break;
    case '2' : $mois = 'Février'; break;
    case '3' : $mois = 'Mars'; break;
    case '4' : $mois = 'Avril'; break;
    case '5' : $mois = 'Mai'; break;
    case '6' : $mois = 'Juin'; break;
    case '7' : $mois = 'Juillet'; break;
    case '8' : $mois = 'Août'; break;
    case '9' : $mois = 'Septembre'; break;
    case '10' : $mois = 'Octobre'; break;
    case '11' : $mois = 'Novembre'; break;
    case '12' : $mois = 'Decembre'; break;
    }
    $jour=strftime("%w",strtotime($time));
    switch ($jour){
    case '1' : $jour = 'Lundi'; break;
    case '2' : $jour = 'Mardi'; break;
    case '3' : $jour = 'Mercredi'; break;
    case '4' : $jour = 'Jeudi'; break;
    case '5' : $jour = 'Vendredi'; break;
    case '6' : $jour = 'Samedi'; break;
    case '0' : $jour = 'Dimanche'; break;
    }
    $mor1=strftime("%d",strtotime($time));
    $mor2 = strftime( "%Y" , strtotime( $time ) );
    if($mode == 'long')
    {
        $mor3=strftime("à %Hh%Mm%Ss", strtotime($time));
    }
    else
    {
        $mor3=NULL;
    }
    return $jour." ".$mor1." ".$mois.' '.$mor2.' '.$mor3;
}
?>

Et la fonction parse:

<?php
function parse($text)
{
 $text = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $text);
 $text = preg_replace('#@([a-z0-9_]+)#i', '<a href="http://twitter.com/$1">@$1</a>', $text);
 $text = preg_replace('# #([a-z0-9_-]+)#i', ' <a href="http://search.twitter.com/search?q=%23$1">#$1</a>', $text);
 return $text;
}
?>

Ainsi que le fichier final:

<?php
function smarty_cms_function_twitter($params, &$smarty)
{
    //instruction
    $html='';
    $user=$params['user'];
    $count=$params['nbtweet']*2;
    $date_format= 'd M Y, H:i:s';
    $url='http://twitter.com/statuses/user_timeline/'.$user.'.xml?count='.$count;
    $XML=simplexml_load_file($url);
    $html.='<ul>';
    $boucle=1;
    foreach($XML->status as $status)
    {
        if($boucle<=$params['nbtweet'])
        {
            $datetime=$status->created_at;
            $date=dateFR($datetime,'');
            $html.="<li> + ".parse($status->text)."&nbsp;&nbsp; ==> &nbsp;&nbsp;<a href="http://twitter.com/".$user."/status/".$status->id."">".$date."</a></li>";
            $boucle++;
        }
    }
    $html.='</ul>';
    return $html;
}
function smarty_cms_help_function_twitter()
{
   echo lang('help_function_twitter'); 
}
function smarty_cms_about_function_twitter()
{
    ?>
<p>Author: Pascal Cañadas&lt;pascal@mirandais.fr&gt;</p>
<p>Version: 1.0</p>
    <?php
}
function dateFR($time,$mode='long')
{
    setlocale(LC_TIME, 'fr');
    $mois= strftime("%m",  strtotime($time));
    switch ($mois){
    case '1' : $mois = 'Janvier'; break;
    case '2' : $mois = 'Février'; break;
    case '3' : $mois = 'Mars'; break;
    case '4' : $mois = 'Avril'; break;
    case '5' : $mois = 'Mai'; break;
    case '6' : $mois = 'Juin'; break;
    case '7' : $mois = 'Juillet'; break;
    case '8' : $mois = 'Août'; break;
    case '9' : $mois = 'Septembre'; break;
    case '10' : $mois = 'Octobre'; break;
    case '11' : $mois = 'Novembre'; break;
    case '12' : $mois = 'Decembre'; break;
    }
    $jour=strftime("%w",strtotime($time));
    switch ($jour){
    case '1' : $jour = 'Lundi'; break;
    case '2' : $jour = 'Mardi'; break;
    case '3' : $jour = 'Mercredi'; break;
    case '4' : $jour = 'Jeudi'; break;
    case '5' : $jour = 'Vendredi'; break;
    case '6' : $jour = 'Samedi'; break;
    case '0' : $jour = 'Dimanche'; break;
    }
    $mor1=strftime("%d",strtotime($time));
    $mor2 = strftime( "%Y" , strtotime( $time ) );
    if($mode == 'long')
    {
        $mor3=strftime("à %Hh%Mm%Ss", strtotime($time));
    }
    else
    {
        $mor3=NULL;
    }
    return $jour." ".$mor1." ".$mois.' '.$mor2.' '.$mor3;
}
function parse($text)
{
 $text = preg_replace('#http://[a-z0-9._/-]+#i', '<a href="$0">$0</a>', $text);
 $text = preg_replace('#@([a-z0-9_]+)#i', '<a href="http://twitter.com/$1">@$1</a>', $text);
 $text = preg_replace('# #([a-z0-9_-]+)#i', ' <a href="http://search.twitter.com/search?q=%23$1">#$1</a>', $text);
 return $text;
}
?>

Voici, le tutoriel est fini pour aujourd'hui, si vous avez des remarques ou des idées pour de futur turoriel, n'hésitez pas à poster dans les commentaires.

Publier sur mon compte twitterPublier sur mon viadeoPublier sur mon deliciousPublier sur mon compte twitter

Ajoute ton commentaire

Pseudo : *
E-Mail : *
MSN :
Site internet :
Blog :
Note : *
Commentaire : *
Ne pas compléter :

Le 25-06-2011 à 18:35:58 par leknoppix

avatarje ne comprend pas trop ce que tu veux faire en fait, d'après forge, il faut enregistrer les traductions de la manière que je montre rapidement à la fin: $lang['admin']['info_browser_cache_expiry'] = 'Spécifie la durée (en minutes) que les navigateurs devraient garder en cache les pages. Une valeur à 0 désactive la fonctionnalité.'; Je pense que quand j'aurais vu comment fonctionne vraiment force, je ferais un tutoriel dessus. Ensuite, il existe une multitude de plugin pour cmsms et beaucoup qui ne sont pas disponible. Personnellement, je pense que force accepte surtout ceux en anglais, ensuite pour les autres langues, c'est surtout grace aux teams de traduction. Je te tiens au courant comment améliorer la traduction.

Note :  notenotenotenotenote
Le 25-06-2011 à 18:28:08 par baptwit

avatareu... ajouter dans quelle balise? parce que la on a un "echo lang('help_function_twitter');", ça serait possible de faire plutôt un if (lang=fr) { echo help_fr.html; } (voir plutôt un switch si on compte le traduire dans plein de langue), d'ou d'ailleurs la nécéssité de le mettre dans un autre fichier :-)

Note :  notenotenotenotenote
Le 25-06-2011 à 18:06:57 par leknoppix

avatarPour créer un fichier à part, je pense que tu peux le faire via un include(). Pour la traduction, tu peux également le faire avec un seul fichier en ajoutant dans la balise un champs lang par exemple. Ensuite, par rapport à forge, je n'ai pas encore compris trop comment cela fonctionnait, mais promis, sur des parties que l'on pourrait appelé Bonus, j'y répondrais, c'est très bien de demander ;) . Ensuite, pour le système de notation, c'est vrai qu'il est devenu complètement inutile, il date presque de 3 ans. J'avais pas prévu d'y retoucher. Dans la prochaine version, j'éviterais de mettre ceci. Mais bon, actuellement, je suis encore de réfléchir à la présentation de ce site d'une autre manière plus simple et plus orienter learning que blobbing! Merci en tout cas.

Note :  notenotenotenotenote
1 - 2 - 3

© 2007-2017