# Как переписать даты постов для определённых категорий (ролевая игра в жанре нарратив)

**URL:** <https://meta.discourse.org/t/how-to-rewrite-post-dates-for-certain-categories-narrative-project-roleplay/370139>\
**Category:** Development\
**Created:** [13.Июнь.2025 21:50:44 UTC](https://meta.discourse.org/t/how-to-rewrite-post-dates-for-certain-categories-narrative-project-roleplay/370139 "2025-06-13T21:50:44Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![Alteras](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/alteras/32/179824_2.png) [@Alteras](https://meta.discourse.org/u/Alteras)\
**Post date:** [14.Июнь.2025 01:35:56 UTC](https://meta.discourse.org/t/how-to-rewrite-post-dates-for-certain-categories-narrative-project-roleplay/370139/2 "2025-06-14T01:35:56Z")

</div>

Ооо, звучит весело! Скорее всего, существующих решений для этого нет, и я не могу представить себе законную причину создавать такое, которое реально изменило бы _настоящую_ метку времени. Вместо этого вы можете создать собственный компонент темы, который будет добавлять фиктивную метку времени к каждому сообщению.

Вы можете добавить общий [`[wrap]` bbcode](https://meta.discourse.org/t/generic-bbcode-wrapper-for-theme-components/123516?silent=true), который позволит использовать любой произвольный `[wrap=]` bbcode в сообщениях, которые вы хотите изменить.

Настройте что-то вроде `[wrap=timechange time='Apr 1'][/wrap]`, и вы получите `<span class="d-wrap" data-time="Apr 1" data-wrap="timechange"></span>` непосредственно в сообщении. Затем вы можете использовать [decorateCookedElement()](https://meta.discourse.org/t/theme-developer-tutorial-6-using-the-js-api/357801#p-1734681-decoratecookedelement-5?silent=true), чтобы искать `[data-wrap="timechange"]` в каждом сообщении и решать, нужно ли изменять метку времени.

Полагаю, что в точке вывода метки времени нет плагина, но вы всегда можете просто вставить новый элемент в якорный элемент даты сообщения и использовать CSS, чтобы скрыть старый.

Вот как сейчас выглядит дата сообщения.

```html
<div class="post-info post-date">
  <a class="widget-link post-date" href="..." title="Post date">
    <span title="..." data-time="..." data-format="tiny" class="relative-date">...</span>
  </a>
</div>

```

Вам, вероятно, стоит выбрать `.post-info a.post-date` и добавить туда новый элемент, например `span`. Небольшой CSS `.post-info a.post-date span:first-child { display: none; }` скроет настоящую метку времени. Выбор якорного тега и сохранение его позволит вашим пользователям продолжать использовать его как обычно (там есть функция обмена).

Связав это с `decorateCookedElement()`, помните, что эта функция возвращает корневой элемент обработанного сообщения, поэтому вы можете быстро подняться вверх по DOM отсюда с помощью `element.closest()` и `.querySelector()`, чтобы добраться до нужного `.post-info`.

Использование bbcode позволит вам (и любому другому) изменять внешний вид любого сообщения, независимо от категории. Вы также можете ограничить места, где это будет отображаться, с помощью хитрого CSS. У тела должен быть класс `.category-*`, содержащий название категории темы. Таким образом, вы можете ограничить свой CSS только этими категориями.

---

_[View the full topic](https://meta.discourse.org/t/how-to-rewrite-post-dates-for-certain-categories-narrative-project-roleplay/370139)._
