Bonjour. Pour une prochaine saison d’un projet narratif de science-fiction se déroulant dans un futur proche, nous souhaitons essayer de réécrire les dates de tous les messages dans certaines catégories sur notre Discourse en des jours/mois/années spécifiques. Je sais que cela peut paraître étrange, mais cela a du sens dans notre cas, car notre communauté l’utilise pour du jeu de rôle dans l’univers, et voir l’année réelle défait un peu la suspension d’incrédulité. J’ai essayé de chercher des plug-ins existants ou d’autres solutions sans grand succès. Le mieux que je puisse imaginer est que je devrais en écrire un moi-même et utiliser des points d’extension de plug-in (plug-in outlets) pour modifier les dates. Quelqu’un aurait-il des idées ou des éléments existants que nous pourrions utiliser ?
Comment réécrire les dates de publication pour certaines catégories (jeu de rôle de projet narratif)
Oooo, ça a l’air amusant ! Il n’existe probablement aucune solution existante pour cela, et je ne peux pas vraiment imaginer une raison légitime d’en créer une qui changerait réellement l’horodatage réel. Ce que vous pouvez faire à la place, c’est créer un composant de thème personnalisé qui insérerait un faux horodatage par publication.
Vous pouvez ajouter un bbcode générique [[wrap]] (Generic bbcode wrapper for theme components), qui vous permettra d’utiliser n’importe quel bbcode [wrap=] arbitraire dans les publications que vous souhaitez modifier.
Configurez quelque chose comme [wrap=timechange time='Apr 1'][/wrap] et vous obtiendrez \u003cspan class=\"d-wrap\" data-time=\"Apr 1\" data-wrap=\"timechange\"\u003e\u003c/span\u003e dans la publication elle-même. Ensuite, vous pouvez utiliser decorateCookedElement() pour rechercher [data-wrap=\"timechange\"] dans chaque publication afin de décider si l’horodatage doit être modifié.
Je ne pense pas qu’il y ait un point de sortie de plugin au niveau de l’horodatage, mais vous pouvez toujours insérer un nouvel élément dans l’ancre de la date de publication et utiliser du CSS pour masquer l’ancien.
Voici à quoi ressemble la date de publication actuelle.
\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
Vous voudrez probablement cibler .post-info a.post-date et y ajouter un nouvel élément comme un span ou quelque chose de similaire. Un CSS .post-info a.post-date span:first-child { display: none; } masquera l’horodatage réel. Cibler la balise d’ancrage et la préserver permettra à vos utilisateurs de continuer à l’utiliser normalement (elle a des fonctionnalités de partage).
En la connectant à decorateCookedElement(), la fonction vous donne l’élément racine de la publication cuisinée, vous pouvez donc effectuer une recherche rapide dans le DOM à partir de là avec element.closest() et .querySelector() pour atteindre le .post-info correct.
L’utilisation du bbcode vous permettrait (et à quiconque d’autre) de modifier l’apparence de n’importe quelle publication, quelle que soit la catégorie. Vous pouvez également limiter où il est réellement affiché avec un CSS astucieux. Le corps aura la classe .category-* qui contiendra le nom de la catégorie du sujet. Vous pouvez donc limiter votre CSS à ces catégories.
C’est une excellente information pour commencer. Nous voulons spécifiquement que ce soit automatique, plutôt que quelque chose auquel chaque publication devrait adhérer, donc je ne suis pas sûr si le bbcode sera spécifiquement nécessaire, mais je suppose que si nous avions quelque chose qui le générait automatiquement lors du rendu des publications, cela pourrait fonctionner. Je vais certainement examiner vos suggestions. Merci !
Pour vous donner un peu plus de contexte, c’est pour Neurocracy, et notre Discourse est à talk.omnipedia.app où vous pouvez voir la catégorie Spéculation qui a des sous-catégories pour chaque date dans l’univers. Notre communauté s’est naturellement orientée vers le jeu de rôle en tant qu’utilisateurs de notre futur wiki débattant des différents rebondissements.