Пользовательская домашняя страница для групп

Ах! Извините. Я упустил это.

Хм. Да. Интересно, почему я убрал поддержку этих настроек. Кажется, теперь их можно изменить в ядре?

Я проверю, есть ли это в ядре, и если да, то удалю эти настройки.

Или, возможно, в ядре что-то произошло, что сломало эти изменения. Разберусь, что именно. . . .

3 лайка

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

Теперь, если существует custom_default_homepage, используется она, если только нет совпадения с группой. Если есть anon_page и пользователь анонимен, используется эта страница.

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

Вот код:

      let url = null;

      if (settings.custom_default_homepage) {
        url = settings.custom_default_homepage.replace(/^\/+/g, "");
      }

      if (user) {
        if (user.primary_group_name && settings.group_page_map) {
          let groupMap = settings.group_page_map.replace(",", ":").split("|");
          const mapEntry = groupMap.find((value) =>
            RegExp(user.primary_group_name).test(value)
          );
          if (mapEntry) {
            url = mapEntry.split(":")[1].replace(/^\/+/g, "");
          }
        }
      } else if (settings.anon_page) {
        url = settings.anon_page.replace(/^\/+/g, "");
      }

Затем главная страница изменяется только если url содержит значение.

8 лайков

Предназначен ли этот компонент темы для перенаправления любого пользователя из группы на главную страницу при входе в систему или при использовании ссылок? Я установил его, и логотип перенаправляет на выбранную страницу, но при входе в систему пользователь всё равно попадает на страницу по умолчанию /latest. Если этот компонент отвечает за перенаправление при входе, значит, у меня что-то настроено неправильно.

Моя цель — включить всех пользователей в группу по умолчанию и перенаправлять их на альтернативную страницу при входе в систему.

Для срабатывания этого правила TC оно должно быть их основной группой. Это сделано намеренно, чтобы избежать конфликтов, когда пользователь состоит более чем в одной группе с перенаправлением.

В начале мы исходили из того, что это правило переопределяет только домашнюю страницу по умолчанию — все остальные (включая анонимных пользователей) имеют приоритет.

Классический сценарий использования — отображение категорий + последних тем на десктопе, так как на мобильных устройствах это выглядит как список категорий (что не очень полезно).

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

2 лайка

Считается ли уровень доверия 0 допустимой группой? Было бы это правильным настройкой для «Карты страниц групп»? trust_level_0:/discourse-ai/ai-bot/conversations. Это текущая настройка, которую я установил.

Нет, группы уровня доверия нельзя использовать, так как их нельзя сделать основными.

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

3 лайка

Вы пробовали установить пользовательскую домашнюю страницу по умолчанию на страницу вашего ИИ-бота (чтобы она была стандартной для всех), а затем настроить домашнюю страницу для анонимных пользователей на «Последние» (чтобы переопределить стандартную настройку для них)?

1 лайк

Ах, хорошо. Похоже, в моём электронном уведомлении пришла другая версия этого сообщения. Мне этот ответ нравится больше. :slight_smile:

2 лайка

Думал, что так и будет! Всё ещё используете уведомления по электронной почте? Это немного по-динозаврически, Джей!

Скорее всего, это не сработает, так как @everyone — это не настоящая группа и не может быть назначена основной.

2 лайка

Под «everyone» я имел в виду «глобальный», а не псевдогруппу. Я отредактирую свой пост, чтобы это не вводило в заблуждение.

2 лайка

Я очень старый. К тому же я в системе meta не больше 10 часов в день и не хочу ничего пропустить!

5 лайков

Сначала спасибо всем за то, что подключились и помогли с этим! Это очень ценно!

Для меня это загадка.

Я установил этот плагин без проблем и в настройках указал trust_level_0, чтобы сделать эту группу основной. Все участники сайта были добавлены в группу. Теперь все пользователи показывают её как основную.

В настройках компонента «Настраиваемая домашняя страница для групп» у меня установлено следующее.

При переходе на страницу пользователи в основной группе Community-Core всё равно попадают на /latest. Если я изменю страницу для анонимов на что-то другое, кроме /latest, то при входе пользователи будут видеть ту страницу, которая указана в этом поле — значит, происходит именно это перенаправление.

Я использую тему Canvas Screen и переключился на тему по умолчанию для теста, но результат тот же.

Также я отключил все компоненты темы и плагины, чтобы проверить, поможет ли это, но без успеха.

Думаю, либо я упускаю что-то очевидное для других, либо проблема в самом компоненте.

Вы проверяли инспектор и видели основную группу в теге body?

Джей, я действительно не уверен, какой инспектор для этого?

Пользователи отображаются в группе, и на их профилях есть тот же индикатор, что и у меня на этом изображении.

Когда вы щёлкнете правой кнопкой мыши по вашему сайту и выберете «Исследовать элемент», вы увидите, что именно запрашивает pfaffman. Например, на моей странице управления пользователями (/admin/users/{user_id}/{username}) я вижу следующее:


А поскольку это мой аккаунт, то при щелчке правой кнопкой мыши и выборе «Исследовать элемент» я вижу:

Здесь вы можете увидеть «testgroup» внутри тега .

Именно это я имел в виду, но теперь я вспомнил/увидел, что компонент получает основную группу из модели пользователя, а не из CSS.

Так что, возможно, найдите пользователя через административный маршрут пользователей и добавьте .json к URL. Затем проверьте, какая у него основная группа, и выполните поиск (в браузере) по строке primary_group: true, убедившись, что имя точно совпадает с тем, который вы использовали в конфигурации темы.

2 лайка

Всем привет,

Спасибо за разъяснение. Я следовал этим инструкциям и использовал .json URL, чтобы подтвердить точное название группы.

Имя основной группы действительно Community-Core, с заглавными буквами и дефисом, что в точности соответствует тому, что я ввёл в настройках компонента темы.

К сожалению, это всё ещё не работает. Перенаправление на анонимную страницу продолжает действовать. Значит, проблема должна быть в чём-то другом.

Могли бы другие подтвердить, что у них это работает?

Есть ли у вас какие-либо другие идеи, что ещё можно проверить?

Нет. Если оно идет на страницу анонимного пользователя, а не на «пользовательскую домашнюю страницу по умолчанию», значит, при выполнении этого кода пользователь не находится.

      const user = api.getCurrentUser();

Не понимаю, как такое может происходить, если пользователь действительно вошел в систему.

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

1 лайк

Спасибо, Джей. Я пробовал перезагружать страницу. Я внес множество изменений в URL и т.д. Страница Anon точно загружается. Если я её изменю, она перенаправляет на эту страницу, и в адресной строке браузера также появляется /latest.

Я искал и предполагаю, что другого способа просто перенаправить нет. С сайтами на PHP это было проще. Я всё ещё новичок в Discourse.

Это очень необычный сценарий на грани возможного, и, возможно, мы заходим в область, где Discourse используется не по назначению.