2

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

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

我不想更改博客源代码,我想覆盖主题中的那个视图,就像我在前端对所有其他人所做的那样。

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

~/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

但是视图没有被拾取。

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

谢谢

4

1 回答 1

5

您需要使用项目文件创建一个主题,然后添加一个 .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
于 2014-07-27T19:08:25.447 回答