Как сделать формат даты: сегодня, вчера и далее числом

19 октября 2009 в 16:52
Аватар пользователя Liolya Liolya 0 10

Всем доброго времени суток. Сейчас дата создание ноды в пользовательском формате d M Y .
Подскажите пожалуйста, как сделать чтобы вместо даты для сегодняшних нод было "сегодня", для вчерашних "вчера" а далее уже по формату.
Заранее благодарна!

Комментарии

<?php
$now = time();  
$data = $row->{$field->field_alias}; // это для поля views, для node.tpl.php $node->created;

$today = format_date($now, 'custom', 'Y|n|j');
$created = format_date($data, 'custom', 'Y|n|j');

global $user;
if (variable_get('configurable_timezones', 1) && $user->uid && strlen($user->timezone)) {
  $timezone = $user->timezone;
}
else {
  $timezone = variable_get('date_default_timezone', 0);
}

$yesterday = date("Y|n|j", $now - (86400) + $timezone);

if($created == $today) {
  print 'Сегодня';
}
elseif ($created == $yesterday) {
  print 'Вчера';
}
else {
  print format_date($data, 'custom', 'j F, Y');
}
?>

19 октября 2009 в 17:46

таки куда вставлять?
и не понял комментарий в коде... / это для поля views, для node.tpl.php $node->created; - что это значит?

19 октября 2009 в 21:36

"Тыдж" wrote:
таки куда вставлять?
и не понял комментарий в коде... / это для поля views, для node.tpl.php $node->created; - что это значит?

у меня на сайте это используется в шаблоне для поля views-view-field--board--created.tpl
если так использовать, то изменять не надо, если для шаблона ноды то заменить
$data = $row->{$field->field_alias}; на $data = $node->created;

19 октября 2009 в 21:46

Решил сам! прописал в node.tpl.php

<?php
$now 
time();  
$data $node->created// это для поля views, для node.tpl.php $node->created;
 
$today format_date($now'custom''Y|n|j');
$created format_date($data'custom''Y|n|j');
 
global 
$user;
if (
variable_get('configurable_timezones'1) && $user->uid && strlen($user->timezone)) {
  
$timezone $user->timezone;
}
else {
  
$timezone variable_get('date_default_timezone'0);
}
 
$yesterday date("Y|n|j"$now - (86400) + $timezone);
 
if(
$created == $today) {
  print 
format_date($data'custom''G:i');
  print 
' Сегодня';
}
elseif (
$created == $yesterday) {
  print 
format_date($data'custom''G:i');
  print 
'Вчера';
}
else {
  print 
format_date($data'custom''j F, Y');
}
?>
2 мая 2012 в 0:27

Оказывается что скрипт не правильно работает при переходе на следующий месяц: апрель - май

в место вчера пишет дату в формате:

print format_date($data, 'custom', 'j F, Y');

2 мая 2012 в 1:04