في هذه الحالة، يُقام الحدث (المحلي) في مؤسسة محلية معروفة تبعد حوالي 1000 كم عن مدينة أوكلاند (في مدينة أخرى). وجود (أوكلاند) هناك مضلل للغاية.
كان هناك بعض النقاش في الموضوع المرتبط حول هذا الأمر:
سيكون من المفيد جدًا أن نتمكن من إخفاء المنطقة الزمنية (خاصة في الفعاليات) للأحداث المحلية على مستوى الموقع، ولكن لا يمكنني معرفة كيفية القيام بذلك باستخدام CSS - و ask.discourse.com لا يقدم أي مساعدة.
وإلى جانب ذلك، سيكون من المفيد جدًا أن نجعل الأحداث المحلية هي الخيار الافتراضي.
يتم عرض المنطقة الزمنية لمدينة الحدث فقط إذا تم تمكين “إظهار التوقيت المحلي” في إعدادات الحدث
“إظهار التوقيت المحلي” معطل افتراضيًا
لذا أفترض أن لديك مستخدمين يقومون بتمكين “إظهار التوقيت المحلي”، وأنت لا تريد ذلك.
ماذا لو قمت بإخفاء إعداد “إظهار التوقيت المحلي” بحيث لا يمكن تمكينه؟
.event-field.show-local-time {
display: none;
}
ستعرض الأحداث الجديدة بعد ذلك الوقت والمنطقة الزمنية للمدينة الخاصة بالمستخدم. (لا أرى طريقة لإخفاء المدينة، لأنها محتوى مُعدّ.)
على سبيل المثال، سيتم عرض حدث تم إنشاؤه بتوقيت فينيكس بالتوقيت المحلي الخاص بي و “شيكاغو”.
ليس تمامًا - هذه ليست المشكلة. لا يهم حقًا ما إذا كان بالتوقيت المحلي أو بتوقيت المستخدم (سيكون هو نفسه في معظم الحالات).
المشكلة هي أن منطقتنا الزمنية معينة مضللة بسبب النص الذي تحتويه (وهي منطقة زمنية نيوزيلندا الوحيدة). ينطبق هذا أيضًا عليك: في مثالك أعلاه، يشير إلى أنه سيتم عقد الحدث في ليتل كريك، شيكاغو.
حسنًا، بعد أن ضربت رأسي بالحائط مع برمجة الاهتزاز (vibe coding) لبعض الوقت، حصلت على جزء جافاسكريبت هذا (وضعته في علامة تبويب JS لمكون سمة محلي) وهو يؤدي الغرض بالنسبة لي:
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);
// Set up persistent mutation observer for dynamic events/calendar output
const observer = new MutationObserver(() => {
swapTimezones(document);
});
observer.observe(document.body, { childList: true, subtree: true });
// Optionally, also run again after other navigation events
window.addEventListener("hashchange", () => swapTimezones(document));
window.addEventListener("popstate", () => swapTimezones(document));
});
});
إذا وجدت الوقت، فسأقوم بتغليف هذا كمكون سمة قابل للتثبيت حتى يتمكن الآخرون من استخدامه إذا رغبوا في ذلك.
لم أكن أدرك أن نيوزيلندا كلها منطقة زمنية واحدة، ولكن بحلول الوقت الذي انتهيت فيه من هناك، كان لدي شعور بأن مشكلتك ستحتاج إلى جافاسكريبت. سعيد لأنك وجدت حلاً باستخدام جافاسكريبت!