Ajouter les dépendances de thème dans la spécification

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 « J'aime »

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 « J'aime »

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 « J'aime »

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 « J'aime »

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 « J'aime »

Or any non-GH Git repository :wink:

1 « J'aime »

@vinothkannans vient d’ajouter la prise en charge de la liste initiale des composants de thème dépendants, ce qui rend l’installation d’un bundle beaucoup plus simple.

Il publiera ici plus de détails !

1 « J'aime »

Désormais, une liste de composants de thème enfant peut être spécifiée dans le fichier about.json pour les thèmes de premier niveau. Par exemple

{
  "name": "Thème Material Design",
  "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"]
  .
  .
  .
}

Actuellement, cette fonctionnalité présente les limitations suivantes :

  1. Tous les composants de thème enfant sont installés uniquement lors de l’installation initiale.
  2. Si des composants sont supprimés ultérieurement dans about.json, cela ne supprimera pas le composant de thème enfant déjà installé.
  3. Si un composant de thème installé est supprimé manuellement, le système ne le réinstallera pas.
  4. Vous ne pouvez pas spécifier de composants de thème enfant pour un autre composant de thème.
5 « J'aime »

Je me demande s’il serait possible de définir des paramètres par défaut pour les composants de thème intégrés.

Par exemple, modifier les valeurs par défaut dans settings.yml de Discourse Button Styles pour qu’elles correspondent à un thème de niveau supérieur.

(Au moment où j’écris, je pense qu’il faudrait bifurquer le composant de thème pour y parvenir.)