Add theme dependencies in specification

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 лайков

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 лайков

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 лайков

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 лайка

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 лайков

Or any non-GH Git repository :wink:

1 лайк

@vinothkannans только что добавил поддержку первичного списка зависимых компонентов темы, что делает установку пакета гораздо проще.

Он опубликует здесь больше подробностей!

1 лайк

Теперь в файле about.json для тем верхнего уровня можно указывать список компонентов дочерних тем. Например:

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

В настоящее время существуют следующие ограничения:

  1. Все компоненты дочерних тем устанавливаются только при первоначальной установке.
  2. Если компоненты позже будут удалены из about.json, это не приведёт к удалению уже установленных компонентов дочерних тем.
  3. Если установленный компонент темы удалён вручную, система не установит его повторно.
  4. Нельзя указывать компоненты дочерних тем для другого компонента темы.
5 лайков

Мне интересно, не стоит ли рассмотреть возможность настройки параметров по умолчанию для компонентов встроенных тем.

Например, изменение значений по умолчанию в settings.yml на Discourse Button Styles, чтобы они соответствовали значениям для темы верхнего уровня.

(На данный момент, как мне кажется, вам пришлось бы форкнуть компонент темы)