Cuando utilizaba un template (.tpl.php) para hacer el theming de un node creado a partir de un tipo de contenido cualquiera, solia imprimir los campos de esta manera:
<?
php print $node->field_location[0]['value'];
?>
pero ...
en primer lugar, eso funciona bien para los campos texto, pero no todos son texto..
algunos son taxonomias.. que se mostrarian asi:
<?php
$term = taxonomy_get_term($node->field_city[0]['value']);
print $term->name;
?>
pero ... (segundo pero) entonces tenemos los campos que son un date.
ahh, parece facil... pero no lo es, esta la cuestion del formato...
primer intento
<?php
print content_format('field_date', $node->field_birthday[0], 'iso');
?>
nop...
segundo intento
// referenciado aca http://drupal.org/node/221151#comment-744973
// workaround here http://drupal.org/node/115706#comment-504436
$eventtime = strtotime($node->field_birthday[0]['value']);
$eventtime = $eventtime - 28800; //this is -8 hours for my timezone
echo date('m/d/Y \a\t g:ia', $eventtime);
este estaba mejor .. pero eso de restar el timezone era pan para hoy y
hambre para mañana....
segui investigando...
para hacer una historia larga corta, al final se muestra asi:
<?php
print format_date($node->field_birthday[0]['value'], 'custom','F j, Y');
?>
Los tipos de formato que aceptan las fechas son "small", "medium", "large", y "custom" (como ya alguien dijo, similar a las pizzas ;).
custom utiliza la funcion del php, ejemplos:
<?php
// Assuming today is March 10th, 2001, 5:16:18 pm, and that we are in the
// Mountain Standard Time (MST) Time Zone$today = date("F j, Y, g:i a"); // March 10, 2001, 5:16 pm
$today = date("m.d.y"); // 03.10.01
$today = date("j, n, Y"); // 10, 3, 2001
$today = date("Ymd"); // 20010310
$today = date('h-i-s, j-m-y, it is w Day'); // 05-16-18, 10-03-01,
1631 1618 6 Satpm01
$today = date('\i\t \i\s \t\h\e jS \d\a\y.'); // it is the 10th day.
$today = date("D M j G:i:s T Y"); // Sat Mar 10 17:16:18 MST 2001
$today = date('H:m:s \m \i\s\ \m\o\n\t\h'); // 17:03:18 m is month
$today = date("H:i:s"); // 17:16:18
?>
mas referencias en
A tener en cuenta cuando trabajemos con fechas ...
Use drupals format_date to avoid localization issues
Instead of using php's date, use drupal's format_date to avoid problems with non-english dates.
To be simple and straight to the point: why
<?php
format_date(1238536800, 'custom', 'Y-m-d');
?>
and
<?php
date('Y-m-d', 1238536800);
?>
have different results? First one is 2009-03-31 (which is wrong), second one is 2009-04-01 (which is right).
Found a workaround:
http://drupal.org/node/187449
<?php
$my_date = strtotime($node->field_date[0]['value']);
$tz_offset = strtotime(date("M d Y H:i:s")) - strtotime(gmdate("M
d Y H:i:s"));
$my_date += $tz_offset;
print format_date($my_date, 'custom', 'D d F Y', NULL);
?>
Seems to fix the problem.
Aca se muestra otra forma que permite definir todo esto a traves de la interface web del drupal
http://www.leveltendesign.com/blog/dustin-currie/format-dates-drupal
sin embargo, no logre que me funcionara y no tuve tiempo para investigar que pasaba.
Retomando el inicio y para imprimir los campos se recomienda content_format()
INCORRECTO:
print $node->field_content_something[0]['value'];
CORRECTO:
print content_format('field_content_something', $node->field_content_something, $formatter = 'default', $node = NULL);
acorde a Greggles
http://growingventuresolutions.com/blog/drupal-security
con lo que el ejemplo inicial, quedaría asi:
if ($node->field_location[0]['value']) {
print content_format('field_location',$node->field_location[0], $text_formatter, $node);
}

- Inicie sesión o regístrese para enviar comentarios
