请注意,本站并不支持低于IE8的浏览器,为了获得最佳效果,请下载最新的浏览器,推荐下载 Chrome浏览器
欢迎光临。交流群:166852192

Orchard主题与使用HtmlHelper访问Orchard主题当前文件夹


作为一个Orchard开发人员您可能需要从一个视图(View)访问目前Orchard的主题文件夹内的文件(图片、脚本),由于当前的Orchard主题可以在运行中由管理员轻易的改变,所以显然不可能使用硬编码路径;你需要编程确定当前Orchard主题的路径。

WorkContext.CurrentTheme在Orchard CMS

首先,如果你想知道在Orchard网站使用当前主题的信息,你可以从WorkContext获取它 WorkContext有一个属性,称为CurrentTheme,它里面有很多关于当前主题的信息。
public abstract class WorkContext {    public ExtensionDescriptor CurrentTheme {        get { return GetState<ExtensionDescriptor>(CurrentTheme); }        set { SetState(CurrentTheme, value); }    }}

正如你可以看到下面,CurrentTheme提供了Orchard主题在theme.txt文件的元数据以及主题的位置等;
 
public class ExtensionDescriptor {    public string Location { get; set; }    public string Id { get; set; }    public string ExtensionType { get; set; }            // extension metadata    public string Name { get; set; }    public string Path { get; set; }    public string Description { get; set; }    public string Version { get; set; }    public string OrchardVersion { get; set; }    public string Author { get; set; }    public string WebSite { get; set; }    public string Tags { get; set; }    public string AntiForgery { get; set; }    public string Zones { get; set; }    public string BaseTheme { get; set; }    public IEnumerable<FeatureDescriptor> Features { get; set; }}

有很多关于当前Orchard主题的有用信息,您可以很容易地从WorkContext.CurrentTheme获得有用的内容信息。

Html.ThemePath Orchard辅助

Orchard内的每个主题,都有着不同的内容、样式、脚本和由主题所使用的其他文件,有时你想通过编程从一个视图(View)来访问这些内容。这里有一个OrchardHepler来帮助您访问ThemePath这目的名称。 通过Html.ThemePath、WorkContext.CurrentTheme双重来访问在主题文件夹位置的文件,它会为您提供该文件的路径。 因此,如果我们要访问当前主题的“Content”文件夹内的favicon.ico,我们可以这样做:
<link rel=shortcut icon    href=@Href(Html.ThemePath(WorkContext.CurrentTheme,/content/favicon.ico))>

这是是一个轻便的代码,你可以使用从Orchard主题到其他的主题,例如,无需硬编码在你的Orchard主题、模块和网站的路径。 如果你打算成为一个Orchard主题开发,你会发现这个ThemePath和CurrentTheme非常有用。


作者原创内容不容易,如果觉得内容不错,请点击右侧“打赏”,赏俩给作者花花,也算是对作者付出的肯定,也可以鼓励作者原创更多更好内容。
更多详情欢迎到QQ群 166852192 交流。