Список категорий с баннерами

Этот компонент добавляет опциональные баннеры к стилям страницы по умолчанию для категорий Только категории и Категории с избранными темами:

Вы можете добавить баннеры в настройках компонента, указав категорию сразу под баннером, цвет баннера и текст заголовка. Также есть возможность скрыть стандартные цветные границы:

Чтобы добавить стили, вы можете выбрать общий класс, а также конкретные баннеры по идентификатору категории:

.category list .category-list-banner {
  &.category-5 { [стиль для конкретного баннера] }
  &:after { [стиль для заголовков]}
}

Например, вы можете использовать цветовую кодировку для ваших категорий:

Или добавить фоновые изображения:

:warning: Этот компонент добавляет только элементы макета на страницу категории. Поэтому вы не можете ссылаться на эти заголовки в других местах вашего сайта. Еще одно предупреждение: на мобильных устройствах нет стандартного стиля страницы Только категории. Там всегда будут отображаться и избранные темы.

:+1: Благодарности: Компонент вдохновлен внешним видом сообщества Cfx.re, а также оригинальным решением @godgutten для достижения такого вида, которое было опубликовано в теме Как добавить баннеры категорий?

28 лайков

Спасибо, Nolo! Очень круто! Ваш компонент улучшил наше сообщество

1 лайк

Ноло, я обнаружил ещё одну проблему при переключении стиля форума в ночной режим. Если ты сможешь это исправить, будет идеально!

Это выглядит как ожидаемое поведение. Слот цвета принимает любое значение, которое можно использовать для background-color в CSS. Таким образом, при указании шестнадцатеричного значения цвет останется неизменным в разных режимах и темах.

Если вы действительно не хотите устанавливать цвет фона, укажите none или transparent.

Если вам нужен цвет фона, который меняется в зависимости от режима, его следует задать с помощью CSS-переменной: вы можете использовать одну из предопределённых переменных Discourse, например var(--secondary-high). Или определите свои собственные, как описано в

3 лайка

Ноло, спасибо, это помогло!

2 лайка

Привет! Мне очень нравится то, что вам удалось создать. Но было бы справедливо указать и мою заслугу, а не просто присвоить мои работы и использовать их без упоминания…

Рад, что вам нравится компонент! Не совсем понимаю, почему вы обвиняете меня в присвоении вашей работы, просто используя её…?

Создание этого компонента было вдохновлено этой темой:

Я указывал автору оригинального поста (OP) на ваше решение, но затем заинтересовался, как решить эту задачу без жёсткого кодирования шаблонов и путём извлечения значений из списка настроек в SCSS. Поэтому код компонента по сути посвящён именно этому решению:
https://meta.discourse.org/t/how-to-add-settings-to-your-discourse-theme/82557/52?u=nolo

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

1 лайк

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

2 лайка

@ Nolo
Есть ли способ в TC или с помощью CSS в теме выровнять текст заголовка по левому краю, как во втором вашем примере?

Также есть ли способ (если не используется баннерное изображение) уменьшить высоту шапки до толщины одной строки текста?
И если да, можно ли уменьшить размер текста, чтобы он был не таким крупным?

2 лайка

Да, конечно, вы можете стилизовать баннеры, используя эти классы:

Если вы хотите переопределить существующие объявления для общего класса, вам нужно использовать свойство !important. Например, для упомянутых вами стилей:

.category-list .category-list-banner {
    justify-content: flex-start !important;
    min-height: unset !important;
    &:after {
        font-size: var(--font-up-3) !important;
    }
}

Это связано с тем, что стили фактически объявлены для конкретных баннеров. Я мог бы улучшить это в компоненте, но пока вам нужно переопределять их с помощью !important.

3 лайка

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

1 лайк

Спасибо за предложение, @lisandro_iaffar. Хотя этот компонент действительно просто предоставляет легковесное решение, которое не изменяет HTML-шаблоны. Если вы хотите ссылаться на разделы, вам нужно будет использовать подход, предложенный на GitHub - discourse/discourse-minimal-category-boxes · GitHub.

2 лайка

Спасибо за ваш ответ и за предоставленные рекомендации :slight_smile:
И ещё раз спасибо за этот компонент, он значительно улучшил макет моего форума :smiley:

2 лайка

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

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

1 лайк

Да, конечно :+1: На самом деле я почти всегда делаю выбор категорий на разных элементах страницы (боковая панель, заголовок, навигационная панель, страница категории и т. д.). Это похоже на структуру сайта. Важно, чтобы она была хорошо организована, но это не должно определять представление вашего интерфейса.

Привет, @manuel! Я хотел бы узнать, работает ли этот замечательный компонент после обновлений речи? Я установил его, но у меня он не работает. Заранее спасибо.

Как добавить фоновые изображения?

Привет, добро пожаловать :wave:

Вы можете добавить CSS в свои темы или в отдельный компонент темы:

Например, если вы хотите добавить изображение для категории с ID 4, вы можете сделать что-то подобное:

.category-list .category-list-banner {
    &.category-4 {
        background-image: url(https://images.unsplash.com/32/Mc8kW4x9Q3aRR3RkP5Im_IMG_4417.jpg);
        background-size: cover;
    }
}

Это всего лишь пример. Для получения дополнительной информации вы можете изучить свойства CSS background.

Также полезные ссылки :+1: :

2 лайка

Сообщение было перенесено в новую тему: Добавить дополнительную информацию в поле категории