我正在为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
但视图未被提取。
那么,我如何覆盖我的主题中的视图,该视图将由管理员信息中心而非默认视图获取?
由于
答案 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