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)." ==> <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<pascal@mirandais.fr></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.
Bonjour,
J'aimerai juste savoir si il y a possibilité de faire un fichier a part pour l'aide et le à propos, et savoir sil y a un autre moyen de faire la traduction.
Parce que si je comprends bien la manière dont c'est fait dans le tutoriel, si on veut partager son plugin il faut que la personne qui reçoit change manuellement son fichier de traduction afin de rajouter les lignes au bon endroit... ça ne me parait pas très "cool" (je trouve pas d'autre mot désolé ^^')
Sinon j'aurai bien aimé avoir une ptite partie pour utiliser la forge afin de donner son ptit plugin au public :-) (bon ok c'est juste du bonus)
ps : j'ai laissé la note par défaut, mais j'aime pas ce système de note, je n'y voit pas trop l'interêt en fait ;)
Note :