Czy użytkownicy naprawdę siedzą na stronie przez wystarczająco długi czas, aby te daty musiały być aktualizowane za pomocą javascript? Większość z nich kliknie coś i w pewnym momencie przeładuje całą stronę. Więc może rozwiązanie php też jest opcją?
Możesz osiągnąć rozwiązanie php za pomocą modułu Custom Formatters .
Jeśli utworzysz nowy niestandardowy program formatujący typu php, z następującym kodem (upewnij się, że jest to typ datestamp):
$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;
Podczas tworzenia formatyzatora upewnij się, że wybierasz typ pola „datestamp”. Po utworzeniu formatyzatora, a następnie na karcie zarządzania wyświetlaniem typu zawartości ustaw pole, aby używać tego formatyzatora.
Jeśli nie masz daty zapisanej jako osobne pole, możesz zastosować niestandardowy formatyzator do czasu modyfikacji węzła, instalując moduł Display Suite .
Jeśli nie chcesz używać żadnego z tych modułów, ale chcesz włamać php do swojego motywu lub czegoś takiego, nadal możesz użyć tej samej logiki powyżej z funkcjami format_interval i format_date.
Mam nadzieję, że to może pomóc.