Hola. Para una próxima temporada de un proyecto narrativo de ciencia ficción de futuro cercano, queremos intentar reescribir las fechas en todas las publicaciones en ciertas categorías en nuestro Discourse a un día/mes/año específicos. Sé que suena extraño, pero tiene sentido en nuestro caso porque nuestra comunidad lo usa para juegos de rol dentro del universo, y ver el año real deshace un poco la suspensión de la incredulidad. He intentado buscar complementos existentes u otras soluciones sin mucha suerte. Lo mejor que puedo deducir es que tendría que escribir uno yo mismo y usar salidas de complementos para alterar las fechas. ¿Alguien tiene ideas o cosas existentes que podamos usar?
Oooo, ¡suena divertido! Probablemente no existan soluciones existentes para esto, y realmente no puedo imaginar una razón legítima para crear una que realmente cambie la marca de tiempo real. En su lugar, puedes crear un Componente de Tema personalizado que inserte una marca de tiempo falsa por publicación.
Puedes agregar un bbcode genérico [[wrap]] (Generic bbcode wrapper for theme components), que te permitirá usar cualquier bbcode arbitrario [wrap=] en las publicaciones que quieras cambiar.
Configura algo como [wrap=timechange time='Apr 1'][/wrap] y obtendrás \u003cspan class=\"d-wrap\" data-time=\"Apr 1\" data-wrap=\"timechange\"\u003e\u003c/span\u003e en la propia publicación. Luego, puedes usar decorateCookedElement() para buscar [data-wrap=\"timechange\"] en cada publicación para decidir si la marca de tiempo debe cambiarse.
No creo que haya un plugin outlet en la marca de tiempo, pero siempre puedes insertar un nuevo elemento en el ancla de la fecha de la publicación y usar algo de CSS para ocultar el antiguo.
Aquí tienes cómo se ve la marca de tiempo de la publicación actual.
<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>
Probablemente querrás apuntar a .post-info a.post-date y agregar un nuevo elemento allí como un span o algo similar. Algo de CSS .post-info a.post-date span:first-child { display: none; } ocultará la marca de tiempo real. Apuntar a la etiqueta de anclaje y preservarla permitirá a tus usuarios continuar usándola normalmente (tiene funcionalidad para compartir).
Conectándolo a decorateCookedElement(), la función te da el elemento raíz de la publicación cocida, por lo que puedes hacer una búsqueda rápida en el DOM desde allí con element.closest() y .querySelector() para llegar al .post-info correcto.
Usar bbcode te permitiría (y a cualquiera) cambiar la apariencia de cualquier publicación, independientemente de la categoría. También puedes limitar dónde se muestra realmente con un CSS ingenioso. El cuerpo tendrá la clase .category-* que tendrá el nombre de la categoría del tema. Por lo tanto, puedes limitar tu CSS a esas categorías.
Esa es información muy útil para empezar. Queremos que sea automático, en lugar de algo que cada publicación tenga que elegir, así que no estoy seguro de si el bbcode será específicamente necesario, pero supongo que si tuviéramos algo que lo generara automáticamente al renderizar las publicaciones, eso podría funcionar. Definitivamente revisaré tus sugerencias. ¡Gracias!
Para darte un poco más de contexto, es para Neurocracy, y nuestro Discourse está en talk.omnipedia.app donde puedes ver la categoría de Especulación que tiene subcategorías para cada fecha dentro del universo. Nuestra comunidad, de forma natural, ha caído en el rol de usuarios de nuestra futura wiki debatiendo los diversos giros y vueltas.