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.
Je vois où tu veux en venir, rien ne t'empèche de mettre tout tes fichiers langues (les traductions dans le fichier function.twitter.php.
Ensuite, il faut un peu regardé au niveau de forge. Désolé, je n'es pas le temps, je regarderais dès que possible.
ok merci bien, en fait ce que je voulais faire est d'éviter a la personne prenant le plugin de devoir modifier son fichier admin.inc.php pour ajouter les traductions
En gros avoir les traductions du plugin dans un fichier a part que l'on pourrait facilement envoyer avec le plugin. Par exemple le fichier function.twitter.php un fichier function.twitter_help.php ou il y aurais dedans les différentes version traduites de la fonction help et on ferait un include dans function.twitter.php au lieu d'avoir la version francaise de la fonction help dans lang/ext/fr_FR/admin.inc.php la version es dans lang/ext/es_ES/admin.inc.php
Je sais pas si je suis très clair, m'enfin c'est juste un détail :p
pas de problème, et merci pour ces tutos :-) (et bien sur les réponses aux commentaires ;) )
Note :