Settings not appearing

Hi everyone, I’m getting started on developing things for Discourse, and I’m working on a theme component.
Link: GitHub - NateDhaliwal/discourse-persistent-banner: A theme component for Discourse that cannot be closed by the user.

When putting it on Theme Creator, the settings don’t appear, even though I have a settings.yml. Any ideas?

1 Like

Do you see any error messages at theme creator?

I think you have to use the same quotation marks at the beginning and end.

This could also be a problem. I would try default: ""

Maybe you want to add “block” to the choices. Otherwise you have to use the revert button to choose that again.

2 Likes

Whoops, just realised I was clicking on ‘Create new’ instead of importing it…
But now, when I try using the URL, it says that about.json is invalid or doesn’t exist, asking me if it is a theme.
About.json:

Is there something wrong?

Missing comma after license URL.

4 Likes

:roll_eyes:
@merefield Would version be in ""?

1 Like

Probably that too. Just look at examples.

1 Like

Thanks! One last one, I can’t seem to get the variable to display.

Was it because I didn’t initialise it properly? I tried following the guide…

  1. don’t use “header.html”, use a proper component (preferably a .gjs file, but .hbs might suffice).
  2. use html-safe helper whenever outputting html from settings or variables.
2 Likes

Would I have to use

import Component from "@glimmer/component";

export default class PracticeComponent extends Component {
  get bannerLinks() {
    return JSON.parse(settings.banner_links);
  }
}

then?

1 Like

Look at the billions of examples :stuck_out_tongue_winking_eye:

1 Like

You only need to use a gjs file if you need to process stuff with javascript, otherwise an hbs template file might suffice. Experiment.

1 Like

I’m not sure if I’m going in the right direction.
I made javascripts/persistent-banner.hbs with this:

But nothing shows up. Tried putting it in different places, still won’t work.

Tried looking at example, but many don’t seem to help.
Any advice?

In which plugin outlet do you want to put your banner?
Take a look at Using Plugin Outlet Connectors from a Theme or Plugin

You could use Add a featured topic list to your Discourse homepage as an example

You can use the Plugin outlet locations theme component to find the names and locations of the plugin outlets. “above-main-container” for example is the top one above the topic list, but not above the sidebar.

Looking at the code of a Theme component which adds something similar is also a great way to learn.

You do not need and should not put script tags in hbs files. They should be limited to the content of the template.

Don’t stab in the dark, read the guides:

1 Like