Компонент баннеров тем

Этот компонент позволяет отображать любую тему в виде баннера на пользовательских URL-путях.

Внешний вид по умолчанию довольно простой. На скриншоте показана тема «Добро пожаловать» в виде баннера в списке «Последние»:

Однако баннеры могут отображать различный контент, поддерживаемый в темах, например эмодзи, анимации, ссылки на видео… Поэтому вы можете использовать (и злоупотреблять) этим множеством способов :see_no_evil:

В разделе «Настройки» вы выбираете представления по их относительному URL, а темы — по их ID. Вы также можете разместить баннеры в одном из трёх различных плагин-аутлетов и показывать их только определённой группе:

:+1: Авторы: Код виджета для этого компонента представляет собой по сути копию компонента Category Sidebars от @awesomerobot и, насколько я понимаю, от @xrav3nz

Установить компонент темы

16 лайков

Включает ли это опросы (с которыми можно взаимодействовать)? (Это то, чего нам очень не хватает — возможность разместить опрос, видимый всем, а не скрытый где-то в посте)

3 лайка

Хороший вопрос! Но нет, просто попробовал:

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

3 лайка

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

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

Консоль:

Uncaught TypeError: Cannot read properties of null (reading 'groups')
    at n.html (68eb2e30e7629f8db22df6fed8efb777b0183d8d.js?__ws=mydomain.com:114:36)
    at n.value (application-8b970b30b88888346a1f4d53543a21332202376215babe59aa315ac2054a2627.js:sourcemap:1:3239172)
    at n.value (application-8b970b30b88888346a1f4d53543a21332202376215babe59aa315ac2054a2627.js:sourcemap:1:3235241)
    at s (_vendor-0cf07f050f530b08ccc553a048b7cccd4edb486adc39b865c07d6c6c1cc57fbf.js:90601:45)
    at t.exports (_vendor-0cf07f050f530b08ccc553a048b7cccd4edb486adc39b865c07d6c6c1cc57fbf.js:90584:21)
    at m (_vendor-0cf07f050f530b08ccc553a048b7cccd4edb486adc39b865c07d6c6c1cc57fbf.js:90988:17)
    at h (_vendor-0cf07f050f530b08ccc553a048b7cccd4edb486adc39b865c07d6c6c1cc57fbf.js:90856:9)
    at d (_vendor-0cf07f050f530b08ccc553a048b7cccd4edb486adc39b865c07d6c6c1cc57fbf.js:90843:5)
    at n.rerenderWidget (application-8b970b30b88888346a1f4d53543a21332202376215babe59aa315ac2054a2627.js:sourcemap:1:1455271)
    at t.invoke (_vendor-0cf07f050f530b08ccc553a048b7cccd4edb486adc39b865c07d6c6c1cc57fbf.js:66550:16)
    at e.t.flush (_vendor-0cf07f050f530b08ccc553a048b7cccd4edb486adc39b865c07d6c6c1cc57fbf.js:66442:13)
    at e.t.flush (_vendor-0cf07f050f530b08ccc553a048b7cccd4edb486adc39b865c07d6c6c1cc57fbf.js:66646:21)
    at e.n._end (_vendor-0cf07f050f530b08ccc553a048b7cccd4edb486adc39b865c07d6c6c1cc57fbf.js:67222:34)
    at e.n.end (_vendor-0cf07f050f530b08ccc553a048b7cccd4edb486adc39b865c07d6c6c1cc57fbf.js:66908:12)
    at e.n._run (_vendor-0cf07f050f530b08ccc553a048b7cccd4edb486adc39b865c07d6c6c1cc57fbf.js:67277:16)
    at e.n._join (_vendor-0cf07f050f530b08ccc553a048b7cccd4edb486adc39b865c07d6c6c1cc57fbf.js:67251:21)
    at e.n.join (_vendor-0cf07f050f530b08ccc553a048b7cccd4edb486adc39b865c07d6c6c1cc57fbf.js:66968:19)
    at h (_vendor-0cf07f050f530b08ccc553a048b7cccd4edb486adc39b865c07d6c6c1cc57fbf.js:53760:28)
    at HTMLDocument.<anonymous> (_vendor-0cf07f050f530b08ccc553a048b7cccd4edb486adc39b865c07d6c6c1cc57fbf.js:53864:19)
    at l (_vendor-0cf07f050f530b08ccc553a048b7cccd4edb486adc39b865c07d6c6c1cc57fbf.js:3776:29)
    at c (_vendor-0cf07f050f530b08ccc553a048b7cccd4edb486adc39b865c07d6c6c1cc57fbf.js:3844:12)
2 лайка

Спасибо за сообщение! Мне удалось воспроизвести ошибку только в случае, когда пользователь не авторизован, и я добавил исправление для этого. Не могли бы вы обновить компонент и попробовать снова?

3 лайка

Да, теперь всё работает! Спасибо! :heart:

2 лайка

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

В этом смысле было бы неплохо добавить «баннер категории» в заголовок поста.

Кроме того, этот компонент может даже использоваться для главной страницы.

2 лайка

Привет, спасибо за информацию!

Не планируется ли добавить кнопку закрытия на баннеры?

1 лайк

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

  • он будет загружаться гораздо медленнее
  • он не поддерживает динамическое содержимое. Например, при изменении названия категории компонент не обновится
  • его также сложнее настроить

Тем не менее, мне было бы интересно посмотреть, как вы его используете таким образом :slight_smile:

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

@manuel Выкапываю эту тему, сейчас тестирую на версии 3.1.4. Но настройка «Показывать для группы» не работает, когда я указываю конкретную группу. Пробовал с учётом регистра, но баннер темы не отображается. Когда настройка пустая, всё работает. Есть какие-то идеи?

1 лайк

Да, компонент потребует некоторой рефакторинга… Там довольно много кода, и у меня самого больше нет для него сценария использования. Можем ли мы пометить его как неподдерживаемый?

@jrgong не знаю, что именно вы пытаетесь настроить, но, возможно, стоит попробовать этот компонент «Панель объявлений»? По умолчанию он стилизован под горизонтальную панель, но с небольшим количеством CSS и размещением в слоте above-main-container его можно сделать очень похожим. Требуется HTML вместо Markdown. Также нет функций работы с группами, но большое преимущество в том, что его можно легко удалить.

3 лайка

@manuel спасибо за совет. Мы проверим это, как только выйдет стабильная версия 3.2. Бар объявлений tc несовместим с версией 3.1.

1 лайк

Я применил тег :+1:

3 лайка