タイムゾーンのテキスト(特にイベントで)の変更を許可する

:globe_showing_europe_africa: 新しいカレンダー機能:現地時間を表示からの議論を継続します。

当サイトは、ほぼ完全に自国に限定されています。

タイムゾーンが国内の特定の場所と一致しており、その直下の場所フィールドに表示されるとユーザーを混乱させるという特定の問題があります。

この場合、(現地時間の)イベントはオークランド市から約1000km離れた国内の有名な現地施設で開催されていますが、(オークランド)が含まれているのは非常に誤解を招きます。

リンクされたスレッドでいくつかの議論がありました。

サイトレベルで、特にイベントにおいてタイムゾーンを非表示にできると非常に役立ちますが、CSSでこれを実現する方法が見つからず、ask.discourse.comでも役に立ちませんでした。

これに関連して、ローカルイベントをデフォルトにできると非常に役立ちます。

「いいね!」 1

もし私が正しく理解しているなら:

  • イベントのタイムゾーン都市は、「イベント設定」で「現地時間を表示」が有効になっている場合にのみ表示されます
  • 「現地時間を表示」はデフォルトでは無効になっています

したがって、ユーザーが「現地時間を表示」を有効にしており、それを望んでいないと推測します。

「現地時間を表示」設定を非表示にして、有効にできないようにしてはどうでしょうか?

.event-field.show-local-time {
    display: none;
}

新しいイベントは、ユーザーの現地時間と「シカゴ」と共に時刻を表示するようになります。(これは調理済みのコンテンツであるため、都市を非表示にする方法が見当たりません。)

例:フェニックス時間で作成されたイベントは、私自身の現地時間と「シカゴ」と共に表示されます。

ご検討とご提案ありがとうございます、トッドさん!

正確には違います。これは問題ではありません。現地時間かユーザー時間かは実際にはほとんど問題になりません(ほとんどの場合同じになります)。
問題は、私たちのタイムゾーンが含むテキストのために誤解を招くことです(これはニュージーランドの唯一のタイムゾーンです)。これはあなたにも当てはまります。上記のあなたの例では、イベントがリトルクリーク、シカゴで開催されることを示唆しています。

代わりに目指しているのはこれです。

さて、Vibeコーディングの壁に頭をぶつけてしばらく格闘した後、ローカルのテーマコンポーネントのJSタブに入れたこのJavaScriptの断片が、私にとってはうまく機能しています。

import { apiInitializer } from "discourse/lib/api";

export default apiInitializer("swap-auckland-for-nz", (api) => {
  function swapTimezones(root = document) {
    root.querySelectorAll('.relative-time').forEach(elem => {
      if (elem.textContent && elem.textContent.includes('(Auckland)')) {
        elem.textContent = elem.textContent.replace('(Auckland)', '(NZ)');
      }
    });
  }

  api.onPageChange(() => {
    swapTimezones(document);

    // 動的なイベント/カレンダー出力のための永続的なミューテーションオブザーバーを設定
    const observer = new MutationObserver(() => {
      swapTimezones(document);
    });

    observer.observe(document.body, { childList: true, subtree: true });

    // オプションで、他のナビゲーションイベントの後にも再度実行
    window.addEventListener("hashchange", () => swapTimezones(document));
    window.addEventListener("popstate", () => swapTimezones(document));
  });
});

時間があれば、これをインストール可能なテーマコンポーネントとしてまとめ、必要であれば他の人も使えるようにするつもりです。

ニュージーランドが単一のタイムゾーンだとは知りませんでしたが、そちらでの作業を終える頃には、あなたの問題はJavaScriptが必要になるだろうと感じていました。JavaScriptで解決策が見つかってよかったです!

「いいね!」 1