Новый параметр «Страница по умолчанию»

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

Сегодня мы вносим изменение, которое добавляет новый параметр сайта default homepage, чтобы сделать этот процесс более понятным и простым.

Существующим сайтам не потребуется выполнять никаких действий, так как значение по умолчанию для этого нового параметра — first item in top menu, что соответствует функциональности, которая у нас всегда была. Те же самые варианты присутствуют и в новом параметре. Если вы выберете главную страницу, доступную только для авторизованных пользователей, например new, мы всё равно будем использовать в качестве резервной первый элемент top menu, доступный для анонимных посетителей.

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

В будущем мы можем добавить новые варианты для главной страницы, поэтому следите за обновлениями!

25 лайков

Это очень приятное дополнение, Крис! :clap:

Поскольку мы собираемся внедрить новую домашнюю страницу через outlet custom-homepage, мне интересно, будет ли эта новая настройка учитывать пользовательскую домашнюю страницу, когда плагин или компонент темы её добавляет. Я планировал обновить пользовательские настройки, сбрасывая параметр домашней страницы к значению по умолчанию -1.

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

И наконец, если домашняя страница по умолчанию установлена на первый элемент в верхнем меню, и через api.addNavigationBarItem() добавлена пользовательская ссылка, которая размещается первым элементом, будет ли она действительно считаться первым элементом?

4 лайка

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

Пока что нет… параметры по-прежнему те же, что и в верхнем меню, но одно изменение уже произошло: теперь в пользовательских предпочтениях всегда будет доступен вариант default (ранее он был условным). Вариант “По умолчанию” в пользовательских предпочтениях будет следовать за настройкой сайта.

И здесь тоже пока что “нет” — помимо пользовательской домашней страницы в теме, домашняя страница сайта Discourse по-прежнему имеет различные требования к тому, чтобы быть страницей списка тем (или /categories), а у api.addNavigationBarItem() требования гораздо менее строгие.

3 лайка

Спасибо, Крис. Я очень заинтересован в этом и с любопытством наблюдаю за его развитием.

Могу поделиться одним наблюдением: когда компонент темы вводит пользовательскую домашнюю страницу, пользователи с настроенной персонализированной домашней страницей никогда её не увидят.

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

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

2 лайка

Думаю, путь — /custom.

2 лайка

Теперь понял. Спасибо, @Moin, действительно работает.

Хотя /custom не был бы моим первым выбором для пути главной страницы :))

Вы можете использовать #пермалинки, чтобы использовать что-то вроде /home

да, спасибо, но это «перенаправляет» запрос, и в итоге всё равно попадает на /custom

1 лайк

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

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

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

Возможно ли это с помощью новой настройки в данный момент?

1 лайк

да, это интересный случай, но на данный момент это невозможно с помощью настроек сайта

в голову приходят несколько альтернатив:

  • создать пользовательскую главную страницу для обоих вариантов и разветвлять логику в зависимости от проверки пользователя (очевидно, это потребует немного больше обслуживания, чем использование готового решения)

  • пользовательский интерфейс настройки «страница по умолчанию» будет переопределять главную страницу пользовательской темы, поэтому небольшая кастомизация для использования этого может сработать… что-то вроде

    import { setDefaultHomepage } from "discourse/lib/utilities";
    
    export default {
     name: "force-homepage",
     after: "url-redirects",
    
     initialize(container) {
       if (container.lookup("service:current-user")) {
         setDefaultHomepage("latest");
       }
     },
    };
    

    затем вы можете просто скрыть эту настройку пользователя с помощью CSS

1 лайк

Спасибо, Крис!

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

Это полезно знать!

В таком случае наш уважаемый компонент темы Custom Homepage for Groups может сработать:

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

2 лайка