Итак, теперь, когда я могу вернуть баннер, но он мешает работе каналов, как мне обойти эту проблему? Я подумал использовать CSS, чтобы скрыть баннер, когда каналы видны, предполагая, что URL изменится, но этого не происходит.
Есть ли какие-либо советы, как решить это, не отключая баннер на мобильных устройствах через страницу настроек?
ОБНОВЛЕНИЕ: Я ошибался, предполагая, что URL не меняется. Я просто увидел, что URL содержит “General”, что является одной из моих категорий, и предположил, что он не меняется. Так что ChatGPT помог мне достичь этого, если кому-то интересно (хотя это могло быть что-то, что сам компонент включил, чтобы не мешать каналам на мобильных устройствах):
import { apiInitializer } from "discourse/lib/api";
export default apiInitializer((api) => {
api.onPageChange(() => {
const chatPath = /^\/chat(\/|$)/;
let attempts = 0;
const maxAttempts = 10;
function hideBanner() {
const banner = document.querySelector('.welcome-link-banner-wrapper');
if (banner) {
banner.style.display = chatPath.test(window.location.pathname) ? 'none' : 'block';
} else if (attempts < maxAttempts) {
attempts++;
setTimeout(hideBanner, 200);
}
}
hideBanner();
});
});
Я добавил это в новый компонент, который создал под названием: Hide Welcome Banner on Channels (mobile), во вкладку JS.
Похоже, это работает. Если кто-то из экспертов по JavaScript видит, что можно подправить или улучшить, пожалуйста, поделитесь.