文章目录
概述
NopCommerce源码架构详解-Themes网站主题实现源码分析1。
内容
NopCommerce是使用了网站主题的思想,今天我们就开始来讲讲nop中的Themes网站主题实现源码。Nop在管理后台就提供了主题的选择功能,在Configuration=>Settings=>General Aand Miscellaneous Settings。如下图:

Nop安装之后默认的主题是Default Clean。

Nop主题相关的代码主要在项目Nop.Web和Nop.Web.Framework中。
Nop.Web下面有一个Themes文件夹,这个文件夹是所有主题的根目录,我们打开可以看到一个DefaultClean文件夹,也就是系统自带的主题。如下图:

里面放了css、图片、js和一个用于加载样式和js脚本的Head视图文件。
同样在项目Nop.Web.Framework中也有一个Themes文件夹,里面都是一些实现网站主题的类。

这些类主要作用是:
1、IThemeContext和ThemeContext:主题上下文用于调用其它主题相关类,它是主题的入口,也是中心。
2、ThemeProvider和IThemeProvider:主题全部集合:项目的路径~/Themes/,一个主题一个目录,遍历目录并加载每天个主题目录下面的配置信息theme.config
3、ThemeConfiguration:配置信息theme.config对应的封装类
4、ThemeableRazorViewEngine 和ThemeableVirtualPathProviderViewEngine:ThemeableRazorViewEngine继承于ThemeableVirtualPathProviderViewEngine而它又继承于System.Web.mvc下的VirtualPathProviderViewEngine用于重写里面的ViewLocationFormats和CreatePartialView、FindView等方法以支持主题的方式。