(Заменено) Ссылка на внешний сайт с основного логотипа Discourse

:information_source: Discourse теперь предлагает официальный компонент темы для поддержки этого случая использования:

Оригинальный контент

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

Создайте новый компонент темы

:warning: Обратите внимание: этот раздел руководства вскоре будет выделен в отдельную тему.

На странице «Администрирование / Настройка / Темы» в боковой панели нажмите ссылку «Компоненты». Затем в нижней части боковой панели нажмите кнопку «Установить»:

В открывшемся модальном окне нажмите ссылку «Создать новый»:

Задайте имя для компонента темы и убедитесь, что выбран тип «Компонент». Затем нажмите кнопку «Создать»:

После этого вы попадете на главную страницу компонента темы.

Добавьте код в компонент темы

Код для переопределения URL-адреса по умолчанию основного логотипа необходимо добавить в секцию HEAD вашего компонента темы. Чтобы открыть редактор компонента, нажмите кнопку «Изменить CSS/HTML»:

В открывшемся редакторе нажмите ссылку «HEAD»:

В зависимости от различных условий добавьте следующие фрагменты кода в секцию HEAD редактора, чтобы изменить URL-адрес, на который указывает логотип главной страницы. Обратите внимание: вам нужно заменить https://example.com в коде на полный URL-адрес домашней страницы вашего внешнего сайта:

  • для изменения ссылки на статический URL-адрес:
<script type="text/discourse-plugin" version="1.3.0">
    api.registerValueTransformer("home-logo-href", () => "https://example.com")
</script>
  • для возврата динамического URL-адреса на основе текущего пользователя:
<script type="text/discourse-plugin" version="1.3.0">
    api.registerValueTransformer("home-logo-href", () => {
      const currentUser = api.getCurrentUser();
      return `https://example.com/${currentUser.username}`;
    })
</script>
  • для возврата URL-адреса на основе настройки компонента темы:
<script type="text/discourse-plugin" version="1.3.0">
    api.registerValueTransformer("home-logo-href", () => {
      return settings.example_logo_url_setting;
    })
</script>

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

:+1: Большое спасибо за то, что поделились!


Я добавил это в тег заголовка, но это не сработало

Для меня всё работает идеально.
Вы сделали «жёсткую перезагрузку» вашего сайта с помощью Ctrl + F5?


Я нажал Command+R и даже включил режим инкогнито, но это всё равно не сработало.

Спасибо за эту инструкцию! Мне нужно изменить логотип основного заголовка для сообщества, и код из фрагмента работает идеально.

Однако я заметил, что при этом меняется и ссылка на маленький логотип, который заменяет полный логотип, когда в заголовке отображается название темы. Например, только иконка здесь, на Meta:

image

Это кажется не совсем интуитивным. Можно ли добавить ещё один аргумент в функцию, чтобы она не влияла на маленький логотип?

Из-за Upcoming Header Changes - Preparing Themes and Plugins, я думаю, что это нужно изменить на:

<script type="text/discourse-plugin" version="1.34.0">
    api.registerValueTransformer("home-logo-href", () => "https://полный_адрес_вашей_главной_страницы");
</script>