Боковые панели списка тем

:information_source: Ранее называлось «Discourse Category Sidebars» — название этого компонента темы было обновлено на Topic List Sidebars, так как теперь он поддерживает как категории, так и теги.

:discourse2: Краткое описание Topic List Sidebars берет тему и применяет ее в качестве боковой панели для списка тем категории или тега.
:eyeglasses: Предпросмотр Предпросмотр в Discourse Theme Creator
:hammer_and_wrench: Ссылка на репозиторий https://github.com/discourse/discourse-topic-list-sidebars
:open_book: Новичок в темах Discourse? Руководство для начинающих по использованию тем Discourse

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

Возможности

Этот компонент темы берет тему и применяет ее в качестве боковой панели для списка тем категории или тега. Эти боковые панели видны только при ширине браузера 767 пикселей и более (на большинстве планшетов и мониторов).

Что я могу делать с этим компонентом темы?

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

  • Установите боковую панель для отображения на страницах /latest, /new, /unread и /top, указав all в качестве имени категории в ваших настройках.

  • Выберите, чтобы боковые панели появлялись слева или справа от списка тем.

  • По умолчанию боковая панель категории также отображается для всех ее подкатегорий, если только у подкатегории не определена своя собственная боковая панель (вы можете отключить это, сняв флажок inherit parent sidebar).

Как настроить?

Выберите свои категории и теги, а также добавьте идентификатор темы (например, example.com/t/example-topic/57), который вы хотите использовать для заполнения содержимого боковой панели.

Я рекомендую создавать темы для боковых панелей в соответствующих категориях/тегах, закрывать тему, чтобы не было ответов, и скрывать ее (чтобы она не появлялась в списке тем).

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

Настройки

Название Описание
sidebars Добавление и удаление боковых панелей
sidebar side Выбор: слева или справа
inherit parent sidebar Если флажок установлен, подкатегории наследуют боковую панель своей родительской категории (если у подкатегории не назначена своя собственная боковая панель).

Если флажок снят, подкатегории отображают боковую панель только если она указана.
stick on scroll Если флажок установлен, боковая панель имеет фиксированное положение при прокрутке

Примечания для разработчиков

Каждая боковая панель категории обернута классом, содержащим слаг категории, поэтому для категории персонала это будет .category-sidebar-staff. Вы можете использовать эти классы для стилизации отдельных боковых панелей.

К тегу body на страницах с боковыми панелями также добавляется класс, поэтому вы можете использовать body.custom-sidebar для применения стилей ко всем страницам, на которых есть боковая панель.

Благодарности

:heart: Особая благодарность @xrav3nz за создание основы, сделавшей возможным этот компонент!


:discourse2: Размещено у нас? Компоненты тем доступны для использования на наших планах Standard, Business и Enterprise.

59 лайков

Trying to figure out how to make this work with tags as well. (we use tags heavily rather than having tons of categories.)

It looks like it may be about replacing controller:navigation/category with whatever the equivalent for tags is but not sure.

2 лайка

I just took a quick look and it’s possible to do this for tags…

I’ll probably work on this more tomorrow and spin it off into its own repo.

Yep, that’s the core of it — this seems to work for tags:

const controller = container.lookup("controller:tags-show");
const tag = controller.get("tag");

Update: I’ve got a theme component available, Discourse Tag Sidebars

10 лайков

Since I am using the header submenu plugin, A part of the text is covered by my header bar. It would be great if it was possible to add extra margin/offset or whatever it’s called for the case when additional elements before the header are covering the sidebar’s content.

Also: is there any way to keep the category drop down menu above the sticky sidebar’s content? that would make it easy for users to jump between categories quickly.

altogether I think the category sidebar is a great plugin and has huge potential to add useful information to the forum structure!

Еще один отличный плагин, Крис, спасибо!

У меня есть несколько вопросов и предложений, на которые я надеюсь получить от вас ответы…

1 — Возможно ли сделать так, чтобы при просмотре форума пользователем, переходя со страницы на страницу, боковая панель всегда проверяла последнюю версию содержащегося в ней поста? На данный момент, как мне кажется, содержимое боковой панели обновляется только при перезагрузке страницы? К сожалению, контент, который редко меняется, начинает казаться пользователям устаревшим (особенно активным пользователям), поэтому я хотел бы как можно чаще обновлять тему, связанную с боковой панелью. (Аналогично, если в настройках для этой страницы изменить ID темы, она должна быть обнаружена при следующем просмотре страницы). Я не против дополнительной нагрузки на сервер при каждом просмотре страницы, но если вы опасаетесь, что другим это может не понравиться, возможно, стоит добавить опцию «кэшировать содержимое постов», чтобы вернуть текущее поведение.

2 — Возможно ли связать/извлекать контент из нескольких тем для одной боковой панели? Например, на странице «Последние» вы могли бы хотеть контент из тем 33 и 55 (и в таком порядке). Это было бы здорово для отображения разного контента на разных страницах, а также для включения общей информации/ссылок, которые вы хотели бы видеть в нижней части каждой боковой панели.

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

4 — Возможно ли добавить опцию ширины боковой панели, а также настраиваемую точку отсечения/скрытия (display-none)? Это не критично, так как это можно реализовать через изменения CSS, но было бы здорово иметь такую возможность в настройках.

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

Я думаю, что со всеми вышеперечисленными улучшениями этот плагин стал бы отличным кандидатом для включения в ядро или в качестве официального плагина DC. По моему мнению, он мог бы помочь людям придать их форумам индивидуальный стиль, и я уверен, что люди будут использовать его весело и интересно! :smiley:

Здравствуйте,

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

Спасибо.

Какой синтаксис используется для обращения к подкатегории? Вот что я пробовал:

category/subcategory,123
subcategory,123
category-subcategory,123

Ничего из этого, похоже, не работает. Однако основные категории отображаются.

1 лайк

Хм, кто-нибудь, пожалуйста? Не должно быть так сложно дать ответ…

Похоже, что произошла регрессия, и в некоторых случаях подкатегории не работали. Синтаксис должен быть таким же, как и для категорий: subcategory, 123.

Я рефакторировал тему, поэтому после её обновления подкатегории должны работать как ожидалось!

6 лайков

Это сработало: идеально!
Большое спасибо, как раз к нашему грандиозному открытию.

1 лайк

Отличный плагин!

Возможно ли это каким-то образом и для групп? Боковая панель для групп была бы отличным решением для предоставления информации о группе.

Может ли кто-нибудь подсказать, как получить параметры группы (чтобы компонент понимал, что вы находитесь внутри группы), чтобы я мог попробовать это сделать и создать собственный PR?

@hyphalos Я создал виджет групп, который можно добавить в боковые панели плагина макетов.Возможно, код, который я использовал для этого, поможет вам написать ваш PR:GitHub - paviliondev/layouts-groups-widget: The Groups Widget allows each user to see what groups they are in currently. · GitHub

В качестве альтернативы вы также можете использовать плагин макетов и сам виджет.

2 лайка

Возможно, будет немного смелым просить об этом, раз уж это называется sidebar, но: можно ли добавить опцию для размещения содержимого не сбоку, а всегда выше списка тем?

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

Также приветствуются CSS-хаки.

Я уже пробовал баннеры категорий, но они ограничены первым абзацем, так что это не вариант.

С наилучшими пожеланиями,
Ральф
(Государственная библиотека Берлина)

Что насчёт этого TC?

Думаю, вы всё ещё останетесь с первым абзацем. Но его можно было бы потенциально изменить.

Привет, Крис, это очень приятно.

Я wondered, можно ли это изменить или добавить опцию перемещения из боковой панели в верхнюю панель под заголовком сайта или, возможно, просто под логотипом категории?

Или, если бы вы могли дать рекомендации по добавлению пользовательского CSS для перемещения этого элемента, а также чтобы он отображался на мобильных устройствах как верхняя панель? Это липкая панель? Закреплена непосредственно под основной панелью сайта?

Возможно, я неправильно понимаю, как работает этот компонент темы, но можно ли использовать его для отображения списка тем слева, при клике на тему в списке показывать посты справа (и при этом закреплять список тем слева)? Мне не нужно видеть категории. Это должно выглядеть как Flarum.

1 лайк

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

Хорошо, спасибо!

Всем привет! Я только что объединил большое обновление этого компонента, которое решает несколько задач: FEATURE: include tag sidebars, migrate to objects setting by awesomerobot · Pull Request #22 · discourse/discourse-topic-list-sidebars · GitHub

  • Переносит настройку стиля списка в настройку объектов. Это означает:
    • Каждый боковой панель можно настроить сразу для нескольких категорий
    • Теперь вы можете выбирать категории из выпадающего списка вместо ручного добавления славов
    • Также включена опция для тегов! Это значит, что вам больше не понадобится отдельный компонент (Discourse Tag Sidebars)

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

Например, site-feedback корректно перенесётся в Site Feedback, но нет способа перенести славсы, которые не совпадают с названиями (например, ваш слав для Site Feedbackhamburgers вместо site-feedback).

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

5 лайков

Будут ли автоматически мигрировать настройки тегов?

В новой конфигурации могут ли быть разные боковые панели для одного и того же тега в разных категориях? Как разрешаются конфликты?

2 лайка