Adicionar dependências de tema na especificação

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 curtidas

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 curtidas

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 curtidas

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 curtidas

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 curtidas

Or any non-GH Git repository :wink:

1 curtida

@vinothkannans acabou de adicionar suporte à listagem inicial de componentes de tema dependentes, o que torna a instalação de um pacote muito mais fácil.

Ele postará aqui com mais detalhes!

1 curtida

Agora, uma lista de componentes de temas filhos pode ser especificada no arquivo about.json para temas de nível superior. Por exemplo:

{
  "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"]
  .
  .
  .
}

Atualmente, há as seguintes limitações:

  1. Todos os componentes de temas filhos serão instalados apenas na instalação inicial.
  2. Se componentes forem removidos no about.json posteriormente, o componente de tema filho instalado não será desinstalado.
  3. Se um componente de tema instalado for removido manualmente, o sistema não o reinstalará.
  4. Não é possível especificar componentes de temas filhos para outro componente de tema.
5 curtidas

Estou me perguntando se seria possível considerar a opção de definir configurações padrão para componentes de temas integrados.

Por exemplo, alterar os padrões em settings.yml de Discourse Button Styles, para valores específicos a fim de corresponder a um tema de nível superior.

(Atualmente, acredito que seria necessário fazer um fork do componente de tema)