Versatile Banner

:warning: Update

The behavior of the show on homepage and url must contain theme settings was not working as expected and has now been fixed (thanks @debryc for the report!).

Prior to this change, enabling the show on homepage theme setting would cause the banner to display on any single-level path (e.g. /admin, /review, /about, etc.). Now it will be limited to affecting the homepage (/) exclusively as intended.

The url must contain theme setting is now much more granular. Because of that, I’ve included new default values that I believe are a good starting point. You will want to review your site and this theme setting to ensure the banner is showing/not showing according to your preference.

If you have any questions or trouble adjusting to this change, let me know and I’ll be happy to help you sort things out!

PS - I still have every intention to do a substantial refactor and improvement run with this component, but time has been scarce lately, so I haven’t made a whole lot of progress :sweat_smile:


Hey people! I want to make all the text left-aligned but the CSS theme is not working for me. Can anyone tell me how exactly can we do it?

1 Like

Is this along the lines of what you are after?

If so, here’s some quick and dirty CSS that will hopefully get you started:

.banner-box {
  .row .single-box {
    text-align: left;
    & .banner-list {
      display: block;
      ul {
        margin: 0 0 9px 25px;

  .section-header {
    .x-title {
      padding: 25px 15px;
    .description p {
      text-align: left;

You’ll want to create a new component called “Versatile Banner Customizations” and add the above CSS to the Common section. Make sure you add the new component to any active themes that use the Versatile Banner to pick up the customization.


This worked for me. Thank you so much.



Is it possible to transform the background image into a clickable image ?

Thank you for your response.

Can you give us an example?
Why will you do that?
I mean… all the background image will be a link?
If a user click everywhere on banner will be redirected to that link.
I can’t imagine the use.

1 Like

How can I adjust the height of the banner?

1 Like

Hi @tshenry I am using the Versatile Banner theme-component but it disappears when I uncheck “display on desktop”.
Indeed I would like to display the banner only on mobiles.

But when I uncheck the “display on desktop”… both desktop and mobile Versatile Banner disappear.
Here is the site if you want to check :

Did I miss something ?

1 Like

Is it possible to have the links displayed horizontally on mobile as well? I was a bit surprised to see them show up underneath each other in stead of horizontally.

1 Like

Thanks for reporting this! Sorry for the delayed response. I can reproduce what you describe. I’m pretty sure I know what’s going on. I’ll take a look later this week and get back to you.

The height of the banner is primarily dependent on its content, but you can adjust anything as needed with your own CSS. I’m not sure how well you will be able to fit three columns horizontally on mobile, but you can certainly try with custom CSS as well! Have a look at How to make CSS changes on your site for some tips.


I think I’m experiencing a bug on my site with regards to cookie lifespan in maintaining the expanded/collapsed state. What I want is for my site to remember when users collapse the banner and expand the banner, and keep it on whatever they have no matter what. And it works as expected when I stay on the home page or click on topics. However, as soon as I go to the admin panel, user settings, faq, about, tos, privacy, or docs, and then return to the home page, things get wacky, and sometimes the banner is the opposite of what it was set to, and sometimes even the chevron icon to indicate collapse or expand is in the incorrect orientation.

Here, the chevron icon is up:

But after clicking on docs, and then returning to the homepage, the chevron icon is in the opposite orientation.

This seems like pretty strange behavior…


Just discovered that the Versatile Banner isn’t appearing on the login page for our forum (it’s a private forum) like it used to.

‘Display the banner for anonymous users’ is checked in the component settings

Looking at the html there is a div with class ‘banner-box’ inside a nest of divs with classes ‘emberX’ but nothing inside the div with class ‘banner-box’ - unlike the html for logged in users.

Any idea what could be going wrong?

1 Like

I just pushed a small update to the component.

This should be fixed with the above. I’m really sorry it took so long to get a fix in place. Thanks again for your report!

You will need to add /login to the url must contain theme setting. See this post for more detail.

This has been reported once or twice in the past. Unfortunately I have never able to reproduce it. I’ll try again when I get a chance using your exact steps and see if I have any luck.


I’m using versatile banner and i try to turn the banner into a giant link that redirect to another website
how can i do that ?

try to change-it via un script : '“api.changeWidgetSetting(‘banner-content-widget’, ‘href’, '<site_adresse>” but the versatille banner stop working

1 Like

Thanks, that’s great. It’s working perfectly now! :pray:t2:


You might be able to do something like:

<script type="text/discourse-plugin" version="0.10.0">
  // Add the link to the heading
  api.reopenWidget("banner-box-widget", {
    html(attrs) {
      let bannerBox = this._super();
      bannerBox[0].children[1].tagName = "A";
      bannerBox[0].children[1].properties.href = "";
      return bannerBox;
  // Add the link to the rest of the content
  api.reopenWidget("banner-content-widget", {
    html(attrs) {
      let bannerContent = this._super();
      bannerContent.tagName = "A"; = "";
      return bannerContent;

And add a CSS rule to adjust the link color

.banner-box a {
    color: var(--primary);

Unless there’s specific functionality you need that the Versatile Banner offers, I wonder if you would be better off just making your own simple HTML banner in a new component. Rough example:

Add the following to the Common “After Header” section:

<a href="">
  <div class="custom-banner">
    <h2>This is a customer banner!</h2>

and the following to the Common “CSS” section:

 .custom-banner {
   display: flex;
   justify-content: center;
   align-items: center;
   width: $large-width; // 1110px
   height: 200px;
   margin-bottom: 15px;
   background: grey;
   color: white;

That would give you a simple banner that’s fully clickable:


3 posts were split to a new topic: Banner theme component customizations gone after component updated

I’m installing this component from git, but it seems that I didn’t got the latest codes, FIX: Work with new sticky header and move away from deprecated $.cookie · tshenry/discourse-versatile-banner@0939120 · GitHub wasn’t updated in my site

1 Like

This is because you are running Discourse version 2.6.0.beta2. The commit you linked to requires 2.6.0.beta3 and above. You’ll notice that the commit you linked to has added a discourse-compatibility file to ensure you don’t update to a commit that is incompatible with your Discourse version.


wow it is amazing that discourse will find elder version for me instead of preventing me to install the component. Thank you!