Catégories:
Bonjour,
je souhaite utiliser template.php pour formater un élément de Views (une date).
J’ai donc créé la fonction :
phptemplate_preprocess_views_view_field__actualites__block__field_datedepublication_value(&$vars) {
$vars['output'] = $vars['field']->render($vars['row']);
}Seulement, si j’essaie de placer une fonction, ça ne me retourne rien :
phptemplate_preprocess_views_view_field__actualites__block__field_datedepublication_value(&$vars) {
$get_date = $vars['field']->render($vars['row']);
$vars['output'] = my_date_function($get_date);
}alors que si je mets un argument en dur :
phptemplate_preprocess_views_view_field__actualites__block__field_datedepublication_value(&$vars) {
$get_date = $vars['field']->render($vars['row']);
$vars['output'] = my_date_function('2010-05-27T00:55:17');
}ça marche parfaitement et ça me retourne «27 mai 2010». Quelqu’un peut me dire pourquoi et comment procéder ?
Merci d’avance ! :-)
- Vous devez vous identifier ou créer un compte pour écrire des commentaires

soit ton $get_date n a pas le bon format.
Sinon essaye en mettant
$vars[‘output’] = my_date_function((string)$get_date) ;
MOMO Drupal en force
mbehmane
866
J’ai déjà essayé de placer (string), et ça ne fonctionne toujours pas…
$get_date = $vars['field']->render($vars['row']);$vars['output'] = gettype($get_date);
me retourne bien «string».
Ma fonction est simple :
<?php
function my_date_function($date)
{
$months = array( '01' => 'janvier', '02' => 'février', '03' => 'mars', '04' => 'avril', '05' => 'mai', '06' => 'juin', '07' => 'juillet', '08' => 'août', '09' => 'septembre', '10' => 'octobre', '11' => 'novembre', '12' => 'décembre' );
$date = substr($date,0,10);
if (
strstr($date, '/')){
list($day, $month, $year) = explode("/", $date);
$readable_date = "$day $months[$month] $year";
return $readable_date;
}
else if (strstr($date, '-'))
{
list($year, $month, $day) = explode("-", $date);
$readable_date = "$day $months[$month] $year";
return $readable_date;
}
}
?>
et je ne pense pas que ça vienne de là, puisqu’en fait, aucune fonction ne marche… Un simple :
$get_date = $vars['field']->render($vars['row']);$vars['output'] = substr($get_date,0,10);
ne me retourne rien non plus ! Alors que :
$vars['output'] = substr('2010-05-27T15:27:03',0,10);me retourne bien «2010-05-27»… :’(
(Pour info, j’utilise un sous-thème de Zen…)
—
Lionel
LionelHenne
4
Je doute que ta fonction retourne bien le bon format.car il y a dedans
$readable_date = «$day $months[$month] $year» ;
des variable php entre des cote ??
Ca ne retourne pas ce que tu veut.
MOMO Drupal en force
mbehmane
866
Les variables PHP passent très bien dans des doubles quotes (technique peu recommandée par les puristes à cause de mauvaises performances).
Je viens de trouver ce qui ne fonctionne pas ; en fait,
$vars['field']->render($vars['row'])me retourne :<span class="date-display-single">21/04/2010 - 18:03</span>Donc dans template.php :
function phptemplate_v3_preprocess_views_view_field__actualites__block__field_datedepublication_value(&$vars) {$get_date = strip_tags($vars['field']->render($vars['row']));
$vars['output'] = my_function_date($get_date);
}
et ça fonctionne nickel.
En revanche, ça ne résout pas mon problème initial puisque la fonction
phptemplate_v3_preprocess_views_view_field__actualites__block__field_datedepublication_value()est forcément attachée au fichier views-view-field—actualites—block—field-datedepublication-value.tpl.php dont je souhaite me passer ! Il y a une discussion sur ce sujet : http://drupal.org/node/258089Je pense que je vais devoir choisir une méthode et m’y tenir. Je passe le sujet en résolu :)
EDIT : apparemment, on ne peut pas éditer le post initial, donc euh… RÉSOLU ! ;-)
—
Lionel
LionelHenne
4
oki
MOMO Drupal en force
mbehmane
866