Versatile Banner

Создайте компонент темы, как описано в руководстве для начинающих по использованию Theme Creator и Theme CLI для начала создания темы Discourse, руководстве разработчика по темам Discourse или в любой другой теме, которую можно найти по запросу «theme developer».

Если это не помогло, пожалуйста, подробнее опишите, что именно вы пытаетесь сделать.

5 лайков

Привет, возможно ли преобразовать текст из Versatile Banner в зависимости от локали? Меня интересует перевод интерфейса с французского на немецкий в зависимости от локали.

2 лайка

Не знаю. Но Add localizable strings to themes and theme components может дать некоторые подсказки. Мне кажется, что нужно форкнуть компонент темы, но я не уверен и давно не смотрел код, чтобы знать наверняка.

2 лайка

К сожалению, функция переводов тем, о которой упомянул Джей, появилась незадолго до создания этого компонента, и, насколько я знаю, документация была опубликована уже после того, как я начал над ним работать. На данном этапе было бы очень сложно обновить компонент для поддержки нескольких языков, не сломав при этом существующие версии Versatile Banner :frowning: Скорее всего, лучший вариант для вас — использовать форк.

Я надеюсь, что в будущем мы выпустим «Versatile Banner 2», который позволит реализовать некоторые отсутствующие функции и учесть запросы, поступавшие в течение многих лет.

3 лайка

Можно ли отображать баннер на темах в рамках одной категории? Versatile Banner использует URL и подстановочные знаки, но в Discourse название категории не включается в URL. Или существует способ добавить категорию в URL темы?

1 лайк

Вы можете добавить его в конкретную категорию, добавив ссылку, например, /c/support/* в настройку «URL должен содержать».

2 лайка

Я знаю, именно поэтому я написал «темы в одной категории». У тем есть URL вида /t/*, который не содержит названия категории. Поэтому, если вы добавите /c/support/*, это отобразится только на странице списка тем, а не на страницах тем внутри этой категории.

2 лайка

Извините, я совершенно неправильно это прочитал. :slight_smile: Боюсь, я этого не знаю.

3 лайка

Категория добавляется в качестве класса к тегу <body>, поэтому вы можете написать CSS-код, который будет показывать или скрывать баннер в зависимости от категории. Например:

/* Скрыть баннер по умолчанию */
.custom-banner-outlet {
    display: none;
}

/* Отобразить баннер в категории «General» */
body.category-general .custom-banner-outlet {
    display: block;
}
3 лайка

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

1 лайк

Я думаю, что это возможно с помощью компонента темы CSS Classes for Current User's Groups и добавления небольшого правила display: none; для соответствующей группы, от которой вы хотите скрыть это. :+1:

3 лайка

Огромное спасибо. Это очень близко к тому, что я ищу, но, к сожалению, я совершенно не разбираюсь в CSS. Всё равно благодарю за совет!

1 лайк

Это нормально. :slightly_smiling_face: Если вы сообщите нам название группы, для которой нужно скрыть баннер, мы сможем адаптировать код под ваши нужды и показать, куда его вставить. :+1:

Например:

.group-alumni {
  .custom-banner-outlet {
    display: none;
  }
}
Дополнительные сведения о том, как добавить это на ваш сайт
  • Перейдите в /admin/customize/themes
  • Нажмите Установить, а затем Создать новый
  • Задайте имя и выберите тип «Компонент»
  • Создать
  • Добавьте его в вашу тему
  • Нажмите кнопку Редактировать CSS/HTML и вставьте код во вкладку Общие
  • Сохраните. :+1:

4 лайка

Как можно предварительно просмотреть тему, не активируя её? Я хочу иметь возможность экспериментировать, не нарушая пользовательский опыт. Мы используем тарифный план Discourse с хостингом, поэтому у нас нет возможности запускать тестовые экземпляры.

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

2 лайка
  1. Вы можете добавить другую тему (вероятно, клон вашей обычной) — назовите её «Тест» или что-то подобное.
    • Оставьте вашу обычную тему в качестве «темы по умолчанию».
  2. Убедитесь, что вы включили точно такие же компоненты темы.
  3. Выберите эту тему для вашего пользователя-администратора.

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

Просто не забудьте выбрать обычную тему, когда закончите!

3 лайка

Я думаю, что это может быть неосуществимо, но спросить не помешает.

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

В идеале я хотел бы видеть баннер только над заголовком темы, а не посередине потока. Я думаю, что это непростая задача, поскольку я предполагаю, что баннер использует слот below-site-header, поэтому его поведение зависит от слота, и, следовательно, этот «скачок» — ожидаемое поведение.

Есть ли простой способ узнать, находитесь ли вы в верхней части страницы?

1 лайк

Отличный совет. Всё сработало у меня идеально.

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

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

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

3 лайка

Есть ли способ отображать это только для определённых уровней доверия?

Таким образом, вместо использования cookie для запоминания настройки пользователя о показе/скрытии, все пользователи будут видеть это, пока не достигнут определённого уровня доверия?

1 лайк

Этот компонент баннера сейчас не поддерживает, но Welcome Link Banner поддерживает, если это хорошая альтернатива?

2 лайка

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