果园动态设置主题

Orchard Setting theme dynamically

我正在使用 ISiteThemeService 服务在 Orchard 中动态设置主题:

_themeManager.SetSiteTheme("MyTheme");

但出于某种原因,主题 (The Theme MAchine) 仍然处于激活状态,其中没有样式表。

编辑:当我重新启动 Orchard 时,主题已成功激活。

这是否意味着我每次将主题设置为当前主题时都必须重新启动 Orchard?

如果可以,我怎样才能动态地做到这一点? (重申果园)。

你还需要注入IThemeService并调用:

_themeService.EnableThemeFeatures("MyTheme");

顺便说一句,你在 SO 和 GitHub 上提出的问题的一般主题表明你正在做很多租户的自动设置,你可能想看看 Recipes

要实现的正确接口可能是 IThemeSelector(参见 https://github.com/OrchardCMS/Orchard/blob/6720b71cf3474a9a7b8a8cc9a99d58b1e733acfa/src/Orchard/Themes/IThemeSelector.cs)。

ThemeService 的作用是管理可用的主题,但 IThemeSelector 的实现决定了每个请求使用哪个主题。