Наш сайт (или сайты) почти исключительно доступен только для жителей нашей страны.
У нас есть специфическая проблема: название нашего часового пояса совпадает с названием конкретного населённого пункта в нашей стране, что может запутать пользователей, когда оно отображается непосредственно над полем с местоположением:
В данном случае (местное) мероприятие проводится в известном местном заведении, находящемся примерно в 1000 км от города Окленд (в другом городе). Указание «(Окленд)» в этом контексте вводит в заблуждение.
В связанной теме уже обсуждался этот вопрос:
Было бы очень полезно иметь возможность скрывать часовой пояс (особенно для мероприятий) на уровне сайта для локальных событий, но я не вижу, как это сделать с помощью CSS, а ask.discourse.com не помогает.
Кроме того, было бы очень удобно сделать локальные события настройкой по умолчанию.
Тогда новые события будут как минимум отображать время и город часового пояса пользователя: событие, созданное во времени Феникса, покажет моё локальное время и «Чикаго».
Я не вижу способа полностью убрать город — это часть готового контента, и это всё ещё может сбивать с толку. Возможно, какой-то JavaScript сможет воздействовать на текст в скобках внутри этого селектора? Лучшее, что я могу придумать с помощью CSS, — это добавить иконку, чтобы побудить нажать на всплывающее окно с часовым поясом:
Спасибо за ваше внимание к этому вопросу и за предложения, Тодд!
Не совсем так — это не проблема. На самом деле не так важно, указано ли местное время или время пользователя (в большинстве случаев они будут совпадать).
Проблема в том, что наш конкретный часовой пояс вводит в заблуждение из-за текста в его названии (это единственный часовой пояс Новой Зеландии). Это касается и вас: в вашем примере выше подразумевается, что событие пройдет в Лайтл-Крик, Чикаго.
После того как я немного побился головой об стену «вайб-кодинга», я написал этот фрагмент JavaScript (вставьте его во вкладку 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);
// Настройка постоянного наблюдателя за изменениями для динамического вывода событий/календаря
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. Рад, что вам удалось найти рабочее решение на JS!