覆盖自定义Orchard CMS主题中的Admin形状

时间:2014-07-27 16:50:18

标签: 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

但视图未被提取。

那么,我如何覆盖我的主题中的视图,该视图将由管理员信息中心而非默认视图获取?

由于

1 个答案:

答案 0 :(得分:4)

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

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

        return null;
    }
}

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

BaseTheme: TheAdmin