Ограничить баннер приветствия главной страницей пользователя

У меня есть пользователь, который спрашивает, можно ли ограничить показ баннера только главной страницей, чтобы он не отображался, если страница добавлена в закладки? В настоящее время он показывается в обоих случаях.

Да, это есть в настройках баннера приветственной ссылки:

Вы имеете в виду, если они установили пользовательскую страницу (последние, категории, что угодно) в качестве своей главной страницы в своём профиле?
Тогда эта произвольная страница считается «главной» для пользователя, и, следовательно, приветственный баннер будет отображаться для них на их новой главной странице.

Если главная страница вашего сайта по умолчанию — /categories, и вы хотите, чтобы приветственный баннер отображался только на /categories, независимо от предпочтений интерфейса пользователей, возможно, вы могли бы установить параметр показывать на в значение «discovery» или «all» и использовать JavaScript, чтобы скрыть приветственный баннер на других страницах, кроме той, на которой вы хотите его показать.

Но в данный момент я не знаю, как надёжно определить текущую страницу, на которой мы находимся (включая случаи первой загрузки страницы и смены страницы), чтобы динамически скрывать приветственный баннер.

Я с радостью попробую это позже (:sleeping:), но, возможно, это может стать началом:

Ах, большое спасибо! Да, некоторые мои лидеры сообщества, у которых по умолчанию установлен последний макет, предпочли бы, чтобы баннер отображался, например, только на странице категорий. Я изучу предоставленную вами ссылку.

Хорошо, вот рабочее решение. В моём примере баннер «Добро пожаловать» будет отображаться только на странице /latest, независимо от настроек интерфейса пользователя. Я оставлю вам возможность настроить его так, чтобы он показывался только на странице /categories. :slight_smile:

  1. Установите настройку показывать на для баннера «Добро пожаловать» в значение «все» или «обнаружение», в зависимости от страницы(страниц), на которой(которых) должен отображаться баннер.

  2. Добавьте этот скрипт в вашу тему:

    <script type="text/discourse-plugin" version="1.4.0">
        // показывает баннер «Добро пожаловать» только на странице /latest
        api.onPageChange(() => {
            const router = api.container.lookup('service:router');
    
            if (router.currentRoute.name === 'discovery.latest') {
                document.body.classList.add('route-discovery-latest');
            } else {
                document.body.classList.remove('route-discovery-latest');
            }
        });
    </script>
    
  3. Добавьте этот CSS в вашу тему:

    body:not(.route-discovery-latest) .welcome-link-banner-connector {
       display: none;
    }
    

Использованный источник:

Спасибо за это, огромное спасибо! :raised_hands: