Come riscrivere le date dei post per determinate categorie (narrative project roleplay)

Ciao. Per un’imminente stagione di un progetto narrativo di fantascienza ambientato in un futuro prossimo, vorremmo provare a riscrivere le date in tutti i post di determinate categorie sul nostro Discourse in giorni/mesi/anni specifici. So che sembra strano, ma ha senso nel nostro caso perché la nostra comunità lo usa per giochi di ruolo in-universe, e vedere l’anno reale distrugge un po’ la sospensione dell’incredulità. Ho provato a cercare plug-in esistenti o altre soluzioni senza molta fortuna. La cosa migliore che posso capire è che dovrei scriverne uno io e usare gli outlet dei plug-in per modificare le date. Qualcuno ha idee o materiale esistente che potremmo usare?

Oooo, sembra divertente! Probabilmente non esistono soluzioni esistenti per questo e non riesco davvero a immaginare una ragione legittima per crearne una che cambi effettivamente il timestamp effettivo. Quello che puoi fare invece è creare un componente tema personalizzato che inserisca un timestamp fittizio per post.

Puoi aggiungere un bbcode generico [[wrap]] (Generic bbcode wrapper for theme components), che ti permetterà di utilizzare qualsiasi bbcode arbitrario [wrap=] nei post che desideri modificare.

Imposta qualcosa come [wrap=timechange time='Apr 1'][/wrap] e otterrai <span class="d-wrap" data-time="Apr 1" data-wrap="timechange"></span> nel post stesso. Quindi puoi usare decorateCookedElement() per cercare [data-wrap="timechange"] in ogni post per decidere se il timestamp debba essere modificato.

Non credo che ci sia un plugin outlet al timestamp, ma puoi sempre inserire un nuovo elemento nell’elemento di ancoraggio post-data e usare un po’ di CSS per nascondere quello vecchio.

Ecco come appare l’attuale post-data.

<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>

Probabilmente vorrai puntare a .post-info a.post-date e aggiungere lì un nuovo elemento come span o qualcosa di simile. Un po’ di CSS .post-info a.post-date span:first-child { display: none; } nasconderà il vero timestamp. Puntare all’elemento di ancoraggio e preservarlo permetterà ai tuoi utenti di continuare a usarlo normalmente (ha funzionalità di condivisione).

Collegandolo a decorateCookedElement(), la funzione ti fornisce l’elemento radice del post cucinato, quindi puoi fare una rapida ricerca nel DOM da lì con element.closest() e .querySelector() per raggiungere il .post-info corretto.

L’uso del bbcode ti permetterebbe (e a chiunque altro) di modificare l’aspetto visivo di qualsiasi post, indipendentemente dalla categoria. Puoi anche limitare dove viene effettivamente visualizzato con un po’ di CSS intelligente. Il corpo dovrebbe avere la classe .category-* che avrà il nome della categoria dell’argomento. Quindi puoi limitare il tuo CSS a quelle categorie.

3 Mi Piace

Queste sono ottime informazioni per iniziare. Vorremmo specificamente che fosse automatico, piuttosto che qualcosa a cui ogni post dovesse aderire, quindi non sono sicuro se il bbcode sarà specificamente necessario, ma suppongo che se avessimo una cosa che lo generasse automaticamente durante il rendering dei post, potrebbe funzionare. Esaminerò sicuramente i tuoi suggerimenti. Grazie!

Per darti un po’ più di contesto, è per Neurocracy, e il nostro Discourse è su talk.omnipedia.app dove puoi vedere la categoria Speculation che ha sottocategorie per ogni data all’interno dell’universo. La nostra community è naturalmente scivolata nel roleplaying come utenti del nostro futuro wiki che dibattono le varie svolte e colpi di scena.