J'ai un champ d'image, 'event_image' et l'impression de toutes les variables possibles pour le champ me dit que j'ai un horodatage comme variable possible de l'image à rendre. J'utilise:
print '<pre>';
var_dump(get_defined_vars());
print '</pre>
// renders:
["timestamp"]=>
string(10) "1348629688"
... dans node--mycustom.tpl.php
pour obtenir les variables.
Maintenant, je peux rendre l'horodatage en tant que tel:
<?php print $node->field_event_image['und'][0]['timestamp'] ?>
... et il imprime un horodatage au format UNIX comme:
1348629688
Je voudrais convertir ceci en un format de date PHP. Donc je suppose que je devrais convertir l'horodatage UNIX d'une manière ou d'une autre en utilisant le PHP gmdate
function. Généralement, j'utiliserais quelque chose comme ça pour le php brut:
$mytimestamp=1348629688;
print gmdate("m-d-Y", $mytimestamp);
Ce qui prendrait mon horodatage et ma sortie:
09-26-2012
... mais je ne sais pas comment faire dans le contexte de mon champ drupal 7 et du modèle de nœud.
MISE À JOUR:
Sur la base du commentaire de clive ci-dessous, il s'avère qu'une fonction de prétraitement est la voie à suivre: Donc, dans le fichier template.php de mon thème, j'ai maintenant:
function MYTHEME_preprocess_node(&$vars, $hook) {
$node = $vars['node'];
$field_items = field_get_items('node', $node, 'field_event_image');
$vars['upload_date'] = format_date($field_items[0]['timestamp'], 'mdy');
}
... puis dans mon modèle de nœud personnalisé, j'ai:
<?php print $upload_date; ?>
Remarque, 'mdy'
est un format personnalisé que j'ai défini dans l'interface Drupal. C'est mieux que d'utiliser gmdate
je suppose.
Comme l'a déjà souligné Mohammed Shameem:
<?php print gmdate("m-d-Y", $node->field_event_image['und'][0]['timestamp']) ?>
Cependant, la manière Drupal serait:
<?php print format_date($node->field_event_image['und'][0]['timestamp'], 'short'); ?>
Cette dernière construction affichera la date dans le format standard de date courte configuré pour le site. Le premier utilisera le format vous choisissez. La méthode Drupal garantit que le format de la date est standardisé sur tout le site.
Un autre exemple basé sur le champ dans l'objet utilisateur:
global $user;
$curr_user = user_load($user->uid);
$field_items = field_get_items('user', $curr_user, 'field_some_date_end');
$datetime = $field_items[0]['value']; // Unix time
$formatted = format_date($datetime, 'short'); // Date in short format