Действительно ли пользователи сидят на странице достаточно долго, что эти даты нужно обновлять с помощью javascript? Большинство из них нажмут на что-нибудь и в конечном итоге перезагрузят всю страницу. Так что, возможно, решение php тоже вариант?
Вы можете достичь решения php, используя модуль Custom Formatters .
Если вы создаете новый пользовательский форматер php-типа со следующим кодом (убедитесь, что это тип datetamp):
$element = array();
foreach ($variables['#items'] as $delta => $item) {
$unixstamp = $item['value'];
$time_since = mktime() - $unixstamp;
if ($time_since < 86400) {
$date_str = format_interval($time_since);
}
else {
$date_str = format_date($unixstamp, 'custom', 'jS F Y');
}
$element[$delta] = array(
'#type' => 'markup',
'#markup' => $date_str,
);
}
return $element;
При создании форматера убедитесь, что вы выбрали тип поля 'datetamp'. После создания средства форматирования на вкладке управления отображением вашего типа содержимого установите поле для использования этого средства форматирования.
Если ваша дата не хранится в отдельном поле, вы можете применить пользовательский форматер ко времени изменения узла, установив модуль Display Suite .
Если вы не хотите использовать какой-либо из этих модулей, но хотите взломать php в своей теме или что-то еще, вы можете использовать ту же логику, что и выше, с функциями format_interval и format_date.
Надеюсь, что это может помочь.