【问题标题】:Overriding Admin shapes in custom Orchard CMS theme在自定义 Orchard CMS 主题中覆盖管理形状
【发布时间】:2014-07-27 16:50:17
【问题描述】:

我正在为 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

但是视图没有被拾取。

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

谢谢

【问题讨论】:

    标签: admin orchardcms orchardcms-1.7 orchardcms-1.8


    【解决方案1】:

    您需要使用项目文件创建一个主题,然后添加一个包含类似内容的 .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
    

    【讨论】:

    • 好的。我试过了。如果我使用我正在编码的当前(前端)主题,前端将接管整个管理主题:不是我想要的。如果我创建一个新的管理主题并将您的代码和修改后的视图放在那里,它可以工作(视图),但它不会退回到管理员(所以没有 css,没有 admi 视图,......非常简单)。因此,要使其正常工作,我必须将所有当前管理主题复制到新主题,然后我必须添加我的更改和您的代码。这种方式可行,但我已经复制了管理主题......在我看来这是一种解决方法......
    • 有什么建议只覆盖单个视图而不复制所有相关内容?
    • 只需在 Theme.txt 文件中设置 BaseTheme: TheAdmin
    • 但是是的,这是一种解决方法,不幸的是,Orchard 并没有真正提供任何扩展管理主题的方法
    • 完美!。这是最后一个缺失的部分。 BaseTheme 正是在解决方案中改变您的提示...这样我可以创建我的管理主题来覆盖我需要的内容,如果更新了 AdminTheme,我不需要更新我的。
    猜你喜欢
    • 2017-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多