覆盖自定义 Orchard CMS 主题中的管理员形状

man*_*dea 2 admin orchardcms orchardcms-1.7 orchardcms-1.8

我正在为 Orchard CMS 做一个自定义主题。

作为客户项目的一部分,要求之一是在博客管理页面中具有一些额外的功能。在 Parts.Blogs.BlogPost.ListAdmin.cshtml 中做一些简单的更改非常容易

我不想更改博客源代码,我想覆盖主题中的 wiew,就像我在前端处理所有其他人一样。

按照在果园论坛上找到的一些指南,我尝试了以下路径:

~/Themes/MyTheme/Views/Parts.Blogs.BlogPost.ListAdmin.cshtml
~/Themes/MyTheme/Views/Orchard.Blogs/Parts.Blogs.BlogPost.ListAdmin.cshtml
~/Themes/MyTheme/Views/Dashboard/Admin/Parts.Blogs.BlogPost.ListAdmin.cshtml
Run Code Online (Sandbox Code Playgroud)

但观点没有被采纳。

那么,如何覆盖我的主题中将由管理仪表板而不是默认视图选择的视图?

谢谢

Haz*_*zza 5

您需要使用项目文件创建一个主题,然后添加一个包含以下内容的 .cs 文件:

public class AdminOverride : IThemeSelector
{
    public ThemeSelectorResult GetTheme(RequestContext context)
    {
        if (AdminFilter.IsApplied(context))
        {
            return new ThemeSelectorResult { Priority = 111, ThemeName = "NewAdminTheme" };
        }

        return null;
    }
}
Run Code Online (Sandbox Code Playgroud)

不要将此主题设置为当前主题,只需从后端启用它即可。您还需要将 TheAdmin 设置为 Theme.txt 中的基本主题,如下所示:

BaseTheme: TheAdmin
Run Code Online (Sandbox Code Playgroud)