Featured Categories Header

:bookmark_tabs: Summary Feature categories on select views.
:hammer_and_wrench: Repository Link Manuel Kostka / Discourse / Components / Featured Categories · GitLab
:open_book: New to Discourse Themes? Beginner’s guide to using Discourse Themes

Install this theme component

Cards view

List view

Settings

You can switch between the two above layouts or choose none and declare your own styles. You can also pick a route and set an outlet for the component.

Template

.featured-categories {
  &__container {
  }
  &__heading {
  }
  &__list-container {
  }
  &__category-container {
  }
  &__category-link {
    .category-logo {}
    .category-name {}
    .category-description {}
}
27 Likes

Handy TC, thank you.

A toggle to display only on homepage, display site logo, and display site description under logo would be desirable additions I imagine.

2 Likes

Right now it shows on global lists (latest/new/unread/top). I was thinking of adding a drop-down to settings to select the global pages it should show. So, yes, on my roadmap when I have time for this again!

What would be the use case for having the logo? On the global pages you’re almost “home” anyways?

What I’d actually be most interested in adding is a mobile view. I didn’t have an idea for that so far, so it’s just not shown on mobile. Thanks for sharing If you’d have an idea for that!

4 Likes

Personalized aesthetics, and combined with a short description, would be quick insight about a community for new visitors, and serve as a reminder for existing users about the mission of the community. Positioned above or left of the links.

Displaying this on global links by default, as well as optionally per category (and tag pages?), would serve as a convenient navigation menu for prioritized areas - this would be my primary intended use. (By the way, the ability to include custom links - not only categories - would be another desirable feature.)

Personally, I find that most Discourse sites tend to be on the vague side especially upon initial visit, and by default I think Discourse navigation can be confusing for the average user. Generally my sites are designed to prioritize only a few areas (of many), and these proposed additions would make it very clear to the average user what those areas are, as well as easy to access.

Good component,
We have installed Versatile Banner, how can we move this component UNDER Versatile Banner?
So that the component Versatile Banner is shown first and then yours.
Thank you.

Yes, both components are rendered on the same outlet. I don’t know what causes the order of elements in that case? On my site it shows under the banner by default…

But you should be able to target the order with CSS declarations:

.below-site-header-outlet.categories-header {
  order: -1 !important;
}
.below-site-header-outlet.banner-themes {
  order: -2 !important ;
}
2 Likes

This sounds like many custom options though. I wouldn’t want to add that much logic to this component.
Building a featured navigation sounds more like a use case for a custom html banner to me? You’d just need some links with images and titles.

I agree with that! I think dedicated banners for visitors and for newly-signed-up users can be helpful and welcoming.

2 Likes

There’s a ‘swap default positioning’ in the Versatile Banner settings, if that’s any good to you?

swap default positioning

If there is another banner-related component active, use this to swap its position with the Versatile Banner

3 Likes

Try this setting, it didn’t help me :frowning:

I installed a theme-component but it doesn’t fit inside the main content, making it really look out of place (ugly), I use the air-theme.
Can help me please where I can make the component appear inside the dark color container?

It looks like this:

I would like it to look like this:

Hello,
I’m just starting with discourse and theming…
I want to have some kind of cards in the top like you can see in here: Secret World Legends - Funcom Forums
This theme component seems to help toward that direction…
I installed it and I was able to select the categories I want to appear but I got only the titles…
Which makes sense as I do not set any picture yet…

My question (which is probably a dumb question as no one else have asked it yet) is how I can set the picture of the categories…
And how I “upload” them?

Thank you for any help…

Goto your Categories settings you used to create category and sekect image tab.

Upload image

2 Likes

Hi I am new to discourse so I have a question on featured Categories Header

I am trying to achieve this but i can’t

They have given a few line of code

html.categories-header{
  .below-site-header-outlet.categories-header {
    .wrap {
      .categories-header-item {
        [each item's link, logo, name..]
      }
    }
  }
}

how can i specify the item’s link logo and name

Can anyone clarify this?

Thanks

Hi, welcome :wave:

If you want to display an image like the one in the example, you need to select the relevant categories in the theme component setting and ensure that they each have an image assigned (category settings → Images → Category Logo Image)

3 Likes


This is the Featured Categories theme component setting and I can’t find anything :frowning:

You have to edit your category setting:

Click on Images tab:

image

…and upload a Categry Logo Image!

1 Like

I have a row of products how can i break the products into multiple columns?

Something like that?

If so, try this CSS. Add it to your theme CSS or in a component.

Inside, you can see variables you can control.
You can choose the number of columns, the gap between the elements, and the width of each element.
The elements are stacking automatically.

.below-site-header-outlet.categories-header > div.wrap {
    --ch-columns: 6;
    --ch-gap: 2.5em;
    --ch-width: 110px;
    
    display: grid !important;
    
    grid-template-columns: repeat(auto-fill, minmax(var(--ch-width), 0fr));
    gap: var(--ch-gap) !important;
    
    max-width: calc(var(--ch-columns) * var(--ch-width) + ((var(--ch-columns) - 1) * var(--ch-gap))) !important;
}
3 Likes

Thanks for the help.

Can I ask for one more help


This is wat i am trying to achieve

can you please help me on that

Try something like that:

.below-site-header-outlet.categories-header > div.wrap {
    --ch-columns: 4;
    --ch-gap-row: 2em;
    --ch-gap-col: 6em;
    --ch-width: 120px;
    
    & > div {
        width: var(--ch-width);
    }
    
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    justify-content: center;
    align-items: center;
    
    max-width: calc(var(--ch-columns) * var(--ch-width) + ((var(--ch-columns) - 1) * var(--ch-gap-col))) !important;
}
4 Likes