nathank
(Nathan Kershaw)
1
新しいカレンダー機能:現地時間を表示からの議論を継続します。
当サイトは、ほぼ完全に自国に限定されています。
タイムゾーンが国内の特定の場所と一致しており、その直下の場所フィールドに表示されるとユーザーを混乱させるという特定の問題があります。
この場合、(現地時間の)イベントはオークランド市から約1000km離れた国内の有名な現地施設で開催されていますが、(オークランド)が含まれているのは非常に誤解を招きます。
リンクされたスレッドでいくつかの議論がありました。
サイトレベルで、特にイベントにおいてタイムゾーンを非表示にできると非常に役立ちますが、CSSでこれを実現する方法が見つからず、ask.discourse.comでも役に立ちませんでした。
これに関連して、ローカルイベントをデフォルトにできると非常に役立ちます。
「いいね!」 1
ToddZ
2
もし私が正しく理解しているなら:
- イベントのタイムゾーン都市は、「イベント設定」で「現地時間を表示」が有効になっている場合にのみ表示されます
- 「現地時間を表示」はデフォルトでは無効になっています
したがって、ユーザーが「現地時間を表示」を有効にしており、それを望んでいないと推測します。
「現地時間を表示」設定を非表示にして、有効にできないようにしてはどうでしょうか?
.event-field.show-local-time {
display: none;
}
新しいイベントは、ユーザーの現地時間と「シカゴ」と共に時刻を表示するようになります。(これは調理済みのコンテンツであるため、都市を非表示にする方法が見当たりません。)
例:フェニックス時間で作成されたイベントは、私自身の現地時間と「シカゴ」と共に表示されます。
nathank
(Nathan Kershaw)
3
ご検討とご提案ありがとうございます、トッドさん!
正確には違います。これは問題ではありません。現地時間かユーザー時間かは実際にはほとんど問題になりません(ほとんどの場合同じになります)。
問題は、私たちのタイムゾーンが含むテキストのために誤解を招くことです(これはニュージーランドの唯一のタイムゾーンです)。これはあなたにも当てはまります。上記のあなたの例では、イベントがリトルクリーク、シカゴで開催されることを示唆しています。
代わりに目指しているのはこれです。
さて、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));
});
});
時間があれば、これをインストール可能なテーマコンポーネントとしてまとめ、必要であれば他の人も使えるようにするつもりです。
ToddZ
4
ニュージーランドが単一のタイムゾーンだとは知りませんでしたが、そちらでの作業を終える頃には、あなたの問題はJavaScriptが必要になるだろうと感じていました。JavaScriptで解決策が見つかってよかったです!
「いいね!」 1