Il nostro sito è quasi esclusivamente limitato alla nostra nazione.
Abbiamo un problema particolare per cui il nostro fuso orario assomiglia a una specifica località nel nostro paese, e quindi può confondere gli utenti quando viene visualizzato con il campo della località immediatamente sotto:
In questo caso, l’evento (locale) si tiene in un noto locale a circa 1000 km dalla città di Auckland (in un’altra città). Avere (Auckland) lì è piuttosto fuorviante.
C’è stata qualche discussione nel thread collegato:
Sarebbe molto utile poter nascondere il fuso orario (specialmente negli Eventi) per gli eventi locali a livello di sito, ma non riesco a capire come farlo con il CSS - e ask.discourse.com non è d’aiuto.
Insieme a questo, sarebbe molto utile poter impostare gli eventi locali come predefiniti.
il fuso orario della città dell’evento viene mostrato solo se “Mostra ora locale” è abilitato nelle impostazioni dell’evento
“Mostra ora locale” è disabilitato per impostazione predefinita
Quindi immagino che tu abbia utenti che abilitano “Mostra ora locale” e tu non lo desideri.
E se nascondessi l’impostazione “Mostra ora locale” in modo che non possa essere abilitata?
.event-field.show-local-time {
display: none;
}
I nuovi eventi mostreranno quindi l’ora e la città del fuso orario dell’utente. (Non vedo un modo per nascondere la città, poiché è contenuto pre-elaborato.)
ad esempio, un evento creato in orario di Phoenix verrà visualizzato con la mia propria ora locale e “Chicago”.
Grazie per la tua considerazione e per i suggerimenti, Todd!
Non esattamente: questo non è il problema. Non importa davvero se è l’ora locale o quella dell’utente (saranno le stesse nella maggior parte dei casi).
Il problema è che il nostro fuso orario particolare è fuorviante a causa del testo che contiene (è l’unico fuso orario della Nuova Zelanda). Questo vale anche per te: nel tuo esempio sopra, implica che l’evento si terrà a Little Creek, Chicago.
Beh, dopo essermi sbattuto la testa contro il muro della codifica del tema per un po’, ho questo pezzo di javascript (inserito nella scheda JS di un Componente Tema locale) che sta facendo il trucco per me:
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);
// Imposta un osservatore di mutazione persistente per eventi dinamici/output del calendario
const observer = new MutationObserver(() => {
swapTimezones(document);
});
observer.observe(document.body, { childList: true, subtree: true });
// Facoltativamente, esegui di nuovo dopo altri eventi di navigazione
window.addEventListener("hashchange", () => swapTimezones(document));
window.addEventListener("popstate", () => swapTimezones(document));
});
});
Se trovo il tempo, lo impacchetterò come un Componente Tema installabile in modo che altri possano usarlo se lo desiderano.
Non mi ero reso conto che la Nuova Zelanda avesse un unico fuso orario, ma quando ho finito lì avevo la sensazione che il tuo problema avrebbe richiesto JavaScript. Sono contento che tu abbia trovato una soluzione in JS!