DNN Skin文档

      Skins 可以应用到hostportaltab级,也可以用到模块级,这是我们称它为containers。所有皮肤文件被组织在Portals文件夹,特殊的_default目录被使用来设计host的目录树。每个portal有自己的目录树,根据他们在数据库中的portalID命名。所有关系根据文档结构来判断,所以在数据库中不存在表明portalskin关系的数据。

一个皮肤包,包括以下文件类型:

1、 htmhtml,抽象皮肤的定义文件,将被皮肤上传组件处理来创建一个ascx文件

2、 ascx,预先编译好的符合皮肤引擎要求得用户控件

3、 css文件

4、 图片文件

5、 其他一些资源文件,可以是任意后缀(注意设置主机允许的上传文件类型)

    皮肤定义有两种不同的模式,HTML或者ASCX,两种方式的不同是文件扩展名以及实际的用户控制标签组(见表A)。最好是HTML定义公共portalASCX定义管理区域。

      DNN图片引擎有两种方式导入图片,一种是门户模式,一种是本地模式,选择门户模式,皮肤上传程序将为每个资源前加上<%=skinpath%>标签,这样会消耗一部分资源,但是集成度更高,以致性更方便。本地模式下,上传程序会在相关资源上插入详细的路径,上传程序会管理这些路径。

      Content panes是内容模版的容器。它是定义了一些属性的HTML标签,包括<td><div><span><p>。一个皮肤对象至少需要一个content pane并且命名为“ContentPane”,也可以使用多个content pane。皮肤对象支持同一名称的多个实例,比如:[contentpane:1], [contentpane:2]

皮肤对象包含一个特性,属性。属性允许自定义皮肤对象在你的皮肤上的表现形式。每一个皮肤对杨有它自己支持的对象在表B中。如果你创建ASCX皮肤,你需要在你的皮肤文件中直接描述特别的属性,比如<dnn:Login runat=”server” id=”dnnLogin” Text=”Signin” />。如果你创建HTML皮肤你必须在一个特殊文件中包含你的属性的定义,如果你不定义那就使用系统默认的值。在一个皮肤包中全局的定义放在“skin.xml”,对所有皮肤文件生效。你也可以覆盖全局定义,通过在“skinfilename.xml”文件中重新定义。这是举例代码:

<Objects>

<Object>

<Token>[LOGIN]</Token>

<Settings>

<Setting>

<Name>Text</Name>

<Value>Signin</Value>

</Setting>

</Settings>

</Object>

</Objects>

注意:皮肤文件中皮肤对象的宣告与XML文件中的属性定义是一一对应的关系,即如果在皮肤文件中存在[MENU:1] [MENU:2],那么你需要在XML文件中为每个定义属性。

    在创建HTML皮肤和定义多个Content Panes中,你将需要定义“ID”属性。

样式表(style sheets

    在DNN中存在多种样式表,有CSS,也有自定义的样式表,优先级如下(越往下越优先):

     o Modules – 用户模块样式定义在PortalModuleControl.StyleSheet

     o Default –默认主机样式表– default.css

     o Skin – 皮肤样式 – skin.css or skinfilename.css

     o Container – 容器样式– container.css or containerfilename.css

     o Portal – 门户管理员自定义样式表– portal.css

    皮肤包可以包含一个全局的“skin.css”(对容器来说是“container.css”)可以对包所有皮肤文件有效。另外你也能用“skinfilename.css”为单个皮肤文件定义层叠样式表。默认的DNN层叠样式表(/Portals/_default/default.css)包含许多默认的样式类,portal依靠他们来维持用户体验。你可以自由定义你的格式,但你可能需要最小限度的修改默认的样式来适应你的设计。

    皮肤的缩略图使用jpg作为后缀,名字与皮肤名相同。所有皮肤文件要被压缩成一个zip压缩包,如果想生成互补的皮肤包和容器包,你可以把容器文件压缩并命名为“containers.zip”,把皮肤文件压缩并命名为“skins.zip”,然后将两个文件打包成一个单个的zip文件,以皮肤的名字命名。这将创建全的皮肤包(包括皮肤和容器),通过上传一个单个文件。你也可以在皮肤包(大的)中包含一个About.htm,在皮肤相册预览时这个页面的连接可见。

创建容器皮肤

    容器皮肤和皮肤的唯一不同是需要在容器皮肤中包括动作控制。动作控制是DNN的新特性,作为内容模板功能和portal框架。动作控制是控制内容模板功能的必要的用户界面。默认的动作控制是SolPartActions control,就是你在默认容器皮肤的左上角的三角及弹出菜单。这个控件得到比较好的支持,另外DropDownActions control可用在低版本浏览器上。

皮肤的部署

    可以通过web页面上传你的皮肤包,也可将皮肤包复制到DNN安装目录中的install/skin目录下,程序会自动识别并解压安装。

皮肤的管理

    每个portal的管理员可以看到他们自己的皮肤包和主机上传的的皮肤包。五种水平的皮肤:

Host level

Portal level

Tab level    现在没找到,在哪儿(页面级的,DNN把设计的页面叫Tab

Pane level     在设计皮肤时定义,不能在用户界面下更改,怀疑只是一个概念

Module level

数据库中的Mapping表存储皮肤相关的数据。

原文地址:https://www.cnblogs.com/outofthink/p/1274370.html