DNN 皮肤 模块 开发流程及步骤

一、以下记录了开发DNN皮肤的实践:

1. 在路径Portals\_default\Skins下创建新文件夹,以皮肤名命名。 例如:TWSkin.

2. 在此文件夹中必须创建一个名为skin.css的文件。此文件主要用于写skin的样式表,此文件会被自动加载到DNN的皮肤中。

3. 创建皮肤文件, 例如: bootstrap.ascx , 这个文件是一个用户控件,必须以.ascx结尾(名字可以根据实际情况取)。

4. 打开DNN的默认皮肤文件,同样在路径Portals\_default\Skins下。可以根据如下界面来查看。

5523074

5. 拷贝默认皮肤的内容:大概如下:

<%@ Control Language="C#" AutoEventWireup="false" Inherits="DotNetNuke.UI.Skins.Skin" %>



<%@ Import Namespace="DotNetNuke.Application" %>



<%@ Register TagPrefix="dnn" TagName="LOGO" Src="~/Admin/Skins/logo.ascx" %>



<%@ Register TagPrefix="dnn" TagName="LOGIN" Src="~/Admin/Skins/login.ascx" %>



<%@ Register TagPrefix="dnn" TagName="USER" Src="SkinObject/CustomUser.ascx" %>



<%@ Register TagPrefix="dnn" TagName="BREADCRUMB" Src="~/Admin/Skins/breadcrumb.ascx" %>



<%@ Register TagPrefix="dnn" TagName="STYLES" Src="~/Admin/Skins/Styles.ascx" %>



<%@ Register TagPrefix="dnn" TagName="COPYRIGHT" Src="~/admin/Skins/copyright.ascx" %>



<%@ Register TagPrefix="dnn" TagName="TERMS" Src="~/admin/Skins/terms.ascx" %>



<%@ Register TagPrefix="dnn" TagName="PRIVACY" Src="~/admin/Skins/privacy.ascx" %>



<%@ Register TagPrefix="dnn" TagName="TEXT" Src="~/admin/Skins/Text.ascx" %>



<%@ Register TagPrefix="dnn" Namespace="DotNetNuke.Web.DDRMenu.TemplateEngine" Assembly="DotNetNuke.Web.DDRMenu" %>



<%@ Register TagPrefix="dnn" TagName="MENU" Src="~/DesktopModules/DDRMenu/Menu.ascx" %>



<%@ Register TagPrefix="dnn" TagName="SEARCH" Src="~/Admin/Skins/search.ascx" %>



<%@ Register TagPrefix="dnn" TagName="language" Src="~/Admin/Skins/Language.ascx" %>



<%@ Register TagPrefix="dnn" Namespace="DotNetNuke.Web.Client.ClientResourceManagement" Assembly="DotNetNuke.Web.Client" %>



<%@ Register TagPrefix="dnn" TagName="CONTROLPANEL" Src="~/Admin/Skins/controlpanel.ascx" %>



<dnn:CONTROLPANEL runat="server" ID="cp" />

注意事项:

1. 皮肤中必须包括名为: ContentPane的区域,一般是一个div.

6.Menu的实现:如果DNN中默认没有DRRMenu,需要手动安装此组件。

1)需要在皮肤要目录下创建文件夹:Menu

2) 在此文件夹下创建一个Xml文件,命名为:Menu-menudef.xml 其内容如下所示

<?xml version="1.0" encoding="utf-8" ?>



<manifest>



<template>ULTokens.xslt</template>



</manifest>

3) 然后在此文件夹下创建文件:ULTokens.xslt。具体用法参考

http://www.dotnetnuke.com/Resources/Wiki/Page/DDRMenu-templates.aspx

http://www.w3school.com.cn/xsl/index.asp

7. 没有合适的SkinObject时,可调用API直接输出数据。

<%@ Import Namespace="DotNetNuke.Application" %>

然后用调用API,如下例所示:

<%= TabController.CurrentPage.Description%>



<%= String.IsNullOrEmpty(TabController.CurrentPage.Title)? TabController.CurrentPage.TabName: TabController.CurrentPage.Title%>

常用的变量有:

<%=SkinPath %>

8. 放置container区域的布局问题:

可对照默认皮肤的布局来处理, 也可以按照960Grid的布局格式来布局。

如果页面的布局不正规,则根据设计来布局。

二、Container的实现:

Container的实现比较简单,需要拷贝以下内容到新的Container中

<%@ Control Language="vb" AutoEventWireup="false" Explicit="True" Inherits="DotNetNuke.UI.Containers.Container" %>



<%@ Register TagPrefix="dnn" TagName="TITLE" Src="~/Admin/Containers/Title.ascx" %>

然后根据具体Container的要求来实现样式即可。

注: 必须要有一个id为ContentPane并且Runnet="server"的区域。

三、模块的实现:

http://dnntemplate.codeplex.com/releases/view/52147

从上面的链接中下载DNN CodeSmith Module template中下载模板,然后自动生成工程文件。在生成的时候要注意数据库前缀及模块前缀。

然后打开工程,删除不需要的文件。编译成功。

在DNN站点中配置此模块,然后在一个页面中添加此模块。

实现相应逻辑并调试成功。

在DNN站点中打包此模块。

可参考此文章:http://blog.csdn.net/ouyp0627/article/details/1656760

 

注:欢迎评论…

你可能感兴趣的:(开发流程)