Данный скрипт позволяет автоматически отображать, сколько времени прошло с момента публикации материала на сайте.

После установки рядом с записью появляется удобная надпись вида:


  • Материал добавлен 5 минут назад
  • Материал добавлен 2 часа 15 минут назад
  • Материал добавлен 3 дня назад


Скрипт использует стандартную переменную uCoz $TIMESTAMP$, которая содержит время добавления материала, и в режиме реального времени пересчитывает прошедшее время каждую секунду.

Возможности скрипта:


  • автоматический расчет дней, часов, минут и секунд;
  • правильное склонение слов в русском языке;
  • обновление без перезагрузки страницы;
  • совместимость с материалами uCoz;
  • отсутствие сторонних библиотек;
  • легкая установка в шаблон сайта.


Установка:

Код
<span id="d$ID$"></span>
<script>
(function () {
  const output = document.getElementById("d$ID$");
  if (!output) return;
  const words = {
  day: ["день", "дня", "дней"],
  hour: ["час", "часа", "часов"],
  minute: ["минуту", "минуты", "минут"],
  second: ["секунду", "секунды", "секунд"]
  };
  function declension(number, titles) {
  const mod10 = number % 10;
  const mod100 = number % 100;
  if (mod10 === 1 && mod100 !== 11) {
  return titles[0];
  }
  if (mod10 >= 2 && mod10 <= 4 &&  
  (mod100 < 10 || mod100 >= 20)) {
  return titles[1];
  }
  return titles[2];
  }
  function getText(value) {
  let seconds = Math.floor((value - ($TIMESTAMP$ * 1000)) / 1000);
  if (seconds < 0) seconds = 0;
  const days = Math.floor(seconds / 86400);
  seconds %= 86400;
  const hours = Math.floor(seconds / 3600);
  seconds %= 3600;
  const minutes = Math.floor(seconds / 60);
  const secs = seconds % 60;
  let result = "Материал добавлен";
  if (days) {
  result += " " + days + " " + declension(days, words.day);
  }
  if (hours) {
  result += " " + hours + " " + declension(hours, words.hour);
  }
  if (minutes) {
  result += " " + minutes + " " + declension(minutes, words.minute);
  }
  if (secs) {
  result += " " + secs + " " + declension(secs, words.second);
  }
  output.innerHTML = result + " назад";
  }
  function update() {
  getText(Date.now());
  }
  update();
  setInterval(update, 1000);
})();
</script>


Добавьте данный код в шаблон материала или страницу вывода записей.
Разместите его там, где необходимо показывать время публикации.
Сохраните изменения.

После установки время будет автоматически отображаться возле каждого материала.

Принцип работы:

Скрипт получает дату публикации через переменную uCoz $TIMESTAMP$, сравнивает её с текущим временем пользователя и выводит разницу в удобном для чтения формате.

В отличие от обычного вывода даты публикации, такой вариант делает сайт более современным и похожим на популярные социальные сети, где используется формат «назад».

Скрипт полностью работает на JavaScript и не требует дополнительных настроек.