こんにちは。近未来SFナラティブプロジェクトの今後のシーズンに向けて、Discourseの特定のカテゴリーのすべての投稿の日付を特定の日/月/年に書き換えたいと考えています。奇妙に聞こえるかもしれませんが、私たちのコミュニティはそれをゲーム内ロールプレイに使用しており、実際の日付を見ると、サスペンション・オブ・ディスビリーフ(suspension of disbelief)が少し損なわれてしまうため、私たちのケースでは理にかなっています。既存のプラグインやその他の解決策を探してみましたが、あまりうまくいきませんでした。私が理解している限りでは、自分でプラグインを作成し、プラグインアウトレットを使用して日付を変更する必要があるようです。何かアイデアや既存のものがあれば教えてください。
おお、楽しそうですね!これに対する既存の解決策はおそらくなく、実際のタイムスタンプを変更する正当な理由を想像することもできません。代わりに、投稿ごとに偽のタイムスタンプを挿入するカスタムテーマコンポーネントを作成できます。
任意の [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\"] を検索し、タイムスタンプを変更する必要があるかどうかを判断できます。
タイムスタンプにはプラグインのアウトレットはないと思いますが、投稿日アンカー要素に新しい要素を挿入し、CSS を使用して古い要素を非表示にすることができます。
現在の投稿日は次のようになります。
<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>
おそらく .post-info a.post-date をターゲットにして、span などの新しい要素を追加することになるでしょう。CSS の .post-info a.post-date span:first-child { display: none; } は、実際のタイムスタンプを非表示にします。アンカータグをターゲットにして保持することで、ユーザーは引き続き通常どおり使用できます(共有機能があります)。
decorateCookedElement() に接続すると、この関数は調理済み投稿のルート要素を提供するため、そこから DOM を上に検索して element.closest() と .querySelector() を使用し、正しい .post-info に到達できます。
bbcode を使用すると、カテゴリに関係なく、任意の投稿の表示を変更できます。また、巧妙な CSS を使用して、実際に表示される場所を制限することもできます。本文には、トピックのカテゴリ名を持つ .category-* クラスが含まれているはずです。そのため、CSS をこれらのカテゴリに制限できます。
始めるにあたって素晴らしい情報ですね。各投稿がオプトインする必要があるものではなく、自動的に行われるようにしたいと考えているため、bbcodeが特に必要になるかはわかりませんが、投稿をレンダリングする際に自動的に生成する仕組みがあれば、機能すると思います。ご提案については必ず検討させていただきます。ありがとうございます!
もう少しコンテキストをお伝えすると、これはNeurocracyのためのもので、私たちのDiscourseはtalk.omnipedia.appにあり、そこではSpeculationカテゴリで、各インユニバースの日付のサブカテゴリを見ることができます。私たちのコミュニティは、自然と、私たちの未来のWikiのユーザーとして、様々な展開や方向転換について議論するというロールプレイングに陥りました。