Agregar dependencias de temas en la especificación

As a Discourse theme author, I want to be able to specify child/component themes that are required for my theme to work correctly, so the user (Discourse site admin) doesn’t have to manually go out and add/configure it.

We are working on a downstream theme to work alongside the Mozilla theme (thanks @LeoMcA!) but it’d be nice if we didn’t have to manually specify import their theme and manually link them. Could such a relationship be added to the about.json file?

11 Me gusta

An aside, this would also benefit developers who build themes for clients. It’s becoming a more appealing setup to use a public theme and then tweak it for the client site. But more and more often, they want their customized theme in GitHub for pulling updates and allowing multiple people to work on them. It’d be great to embed the dependency somehow.

11 Me gusta

Asking for advanced features like this makes me :blush:, means the system is being used

Not against building this but needs very careful testing

6 Me gusta

I imagine it’d also be useful for you to be able to specify a particular version/commit that the theme depends on - that way, if we completely change something you’re depending on, it won’t all suddenly break on your end.

4 Me gusta

Yes, good point … although makes it a bit more complex. :slight_smile:

Maybe. If you can add the dependency as a GitHub link of sorts that allows a specific commit, branch, or tag, it gets easier. But that doesn’t mean the whole feature is easy.

5 Me gusta

Or any non-GH Git repository :wink:

1 me gusta

@vinothkannans acaba de añadir soporte para el listado inicial de componentes de tema dependientes, de modo que instalar un paquete es mucho más sencillo.

¡Publicará aquí con más detalles!

1 me gusta

Ahora se puede especificar una lista de componentes de temas secundarios en el archivo about.json para temas de nivel superior. Por ejemplo

{
  "name": "Material Design Theme",
  "about_url": "https://meta.discourse.org/t/material-design-stock-theme/47142",
  "license_url": "https://github.com/discourse/material-design-stock-theme/blob/master/LICENSE.txt",
  "components": ["https://github.com/discourse/discourse-brand-header", "https://github.com/Chaboi45/Take-a-break-component"]
  .
  .
  .
}

Actualmente, presenta las siguientes limitaciones:

  1. Todos los componentes de temas secundarios se instalarán únicamente durante la instalación inicial.
  2. Si se eliminan componentes en about.json posteriormente, no se desinstalarán los componentes de temas secundarios ya instalados.
  3. Si un componente de tema instalado se elimina manualmente, el sistema no lo volverá a instalar.
  4. No es posible especificar componentes de temas secundarios para otro componente de tema.
5 Me gusta

Me pregunto si se podría considerar la posibilidad de permitir establecer la configuración predeterminada de los componentes de temas empaquetados.

Por ejemplo, cambiar los valores predeterminados en settings.yml de Discourse Button Styles, para que sean valores específicos que coincidan con un tema de nivel superior.

(Actualmente, creo que tendrías que bifurcar el componente del tema).