如何为特定类别重写帖子日期(叙事项目角色扮演)

哦,听起来很有趣!可能没有现成的解决方案,而且我很难想象有什么正当理由去创建一个真正改变实际时间戳的解决方案。你所能做的,是创建一个自定义主题组件,它会在每个帖子中插入一个伪造的时间戳。

你可以添加一个通用的 [wrap] bbcode,它允许你在想要更改的帖子中使用任何任意的 [wrap=] bbcode。

设置类似 [wrap=timechange time='Apr 1'][/wrap],你会在帖子本身中得到 \u003cspan class=\"d-wrap\" data-time=\"Apr 1\" data-wrap=\"timechange\"\u003e\u003c/span\u003e。然后你可以使用 decorateCookedElement() 来搜索每个帖子中的 [data-wrap=\"timechange\"],以决定是否应该更改时间戳。

我不认为时间戳处有插件出口,但你总可以在 post-date anchor 元素中插入一个新元素,并使用一些 CSS 来隐藏旧的。

这是当前 post-date 的样子。

\u003cdiv class=\"post-info post-date\"\u003e
  \u003ca class=\"widget-link post-date\" href=\"...\" title=\"Post date\"\u003e
    \u003cspan title=\"...\" data-time=\"...\" data-format=\"tiny\" class=\"relative-date\"\u003e...\u003c/span\u003e
  \u003c/a\u003e
\u003c/div\u003e

你可能需要定位 .post-info a.post-date,并在那里添加一个新元素,比如一个 span。一些 CSS .post-info a.post-date span:first-child { display: none; } 将会隐藏真实的时间戳。定位 anchor 标签并保留它将允许你的用户继续正常使用它(它有分享功能)。

连接到 decorateCookedElement(),该函数会给你煮熟帖子的根元素,所以你可以从那里使用 element.closest() 和 .querySelector() 快速搜索 DOM,以到达正确的 .post-info。

使用 bbcode 将允许你(以及其他人)更改任何帖子的外观,无论其类别如何。你也可以使用一些巧妙的 CSS 来限制它实际显示的位置。正文应该有一个类 .category-*,它将包含主题的类别名称。所以你可以将你的 CSS 限制在这些类别中。