Olá. Para uma próxima temporada de um projeto narrativo de ficção científica em um futuro próximo, queremos tentar reescrever as datas em todas as postagens em certas categorias em nosso Discourse para um dia/mês/ano específicos. Eu sei que parece estranho, mas faz sentido no nosso caso porque nossa comunidade o usa para role-playing dentro do universo, e ver o ano real desfaz um pouco da suspensão da descrença. Tentei procurar por plug-ins existentes ou outras soluções sem muita sorte. O melhor que consegui descobrir é que eu precisaria escrever um e usar saídas de plug-in para alterar as datas. Alguém tem ideias ou coisas existentes que poderíamos usar?
Oooo, parece divertido! Provavelmente não há soluções existentes para isso, e eu realmente não consigo imaginar uma razão legítima para criar uma que realmente alterasse o timestamp real. Em vez disso, você pode criar um Componente de Tema personalizado que insira um timestamp falso por postagem.
Você pode adicionar um bbcode genérico [[wrap]] (Generic bbcode wrapper for theme components), que permitirá usar qualquer bbcode arbitrário [wrap=] nas postagens que você deseja alterar.
Configure algo como [wrap=timechange time='Apr 1'][/wrap] e você obterá \u003cspan class=\"d-wrap\" data-time=\"Apr 1\" data-wrap=\"timechange\"\u003e\u003c/span\u003e na própria postagem. Em seguida, você pode usar decorateCookedElement() para procurar por [data-wrap=\"timechange\"] em cada postagem para decidir se o timestamp deve ser alterado.
Não acho que haja um ponto de plugin no timestamp, mas você sempre pode inserir um novo elemento no elemento âncora post-date e usar algum CSS para ocultar o antigo.
Aqui está como o post-date atual se parece.
<div class="post-info post-date">
<a class="widget-link post-date" href="...">
<span title="..." data-time="..." data-format="tiny" class="relative-date">...</span>
</a>
</div>
Você provavelmente desejará segmentar .post-info a.post-date e adicionar um novo elemento lá como um span ou algo semelhante. Algum CSS .post-info a.post-date span:first-child { display: none; } ocultará o timestamp real. Segmentar a tag âncora e preservá-la permitirá que seus usuários continuem a usá-la normalmente (ela tem funcionalidade de compartilhamento).
Conectando-o ao decorateCookedElement(), a função fornece o elemento raiz da postagem cozida, para que você possa fazer uma pesquisa rápida no DOM a partir daí com element.closest() e .querySelector() para alcançar o .post-info correto.
Usar bbcode permitiria que você (e qualquer outra pessoa) alterasse a aparência de qualquer postagem, independentemente da categoria. Você também pode limitar onde ele é realmente exibido com algum CSS inteligente. O corpo terá a classe .category-* que terá o nome da categoria do tópico. Assim, você pode limitar seu CSS a essas categorias.
Essa é uma ótima informação para começar. Queremos especificamente que seja automático, em vez de algo que cada post teria que optar, então não tenho certeza se o bbcode especificamente será necessário, mas suponho que se tivéssemos algo que o gerasse automaticamente ao renderizar posts, isso poderia funcionar. Definitivamente darei uma olhada em suas sugestões. Obrigado!
Para dar um pouco mais de contexto, é para o Neurocracy, e nosso Discourse está em talk.omnipedia.app, onde você pode ver a categoria Especulação que tem subcategorias para cada data dentro do universo. Nossa comunidade naturalmente se envolveu em roleplaying como usuários de nossa futura wiki debatendo as várias reviravoltas.