DNN5.1.4使用的导航菜单是SoplarMenu,使用到了axd,jquery,不仅资源较大,而且生成的html代码不是搜索引擎青睐的<ul><li></li></ul>形式,更让人头疼
的是不能在新窗口中打开。在多位前辈的博客中都提到改用housemenu,于是乎到其官方网站http://www.houseofnuke.com/下载了最新的版本housemenu2,可
让人失望的是出现了这样那样的问题,比如二级菜单不能出现,IE6中hover到父菜单二级菜单不出现等问题,而且这些问题都是共性的。在其官方论坛中也有好多类似
的提问,但是没有得到官方的及时回复。不得以,用reflection反编译了housemenu,经过测试,找到了这些问题所在,并做了修改重新编译了一下,上传dll到服务器
后经测试能使用。同时,结合中国国情,将原来的在本页面打开修改成了在新页面中打开(_blank).这是我应用这个改进版的站http://www.taotel.com/,大家可以看
看menu的效果,因为CSS我不是擅长,有些地方还不如人意,希望大家多包涵,改进。下面我就将部署的具体过程及相关文件列出来:
1、上传附件中的Avastone.HouseMenu.dll到服务器网站中的bin目录下,avastone.housemenu文件夹到DesktopModules文件夹下,
CSS文件HouseMenu.css上传到你哪里呢?你自己随便放一个位置吧,比如放到images文件夹,然后在Default.aspx中添加引用就行。
为简单起见,我们放在head之间吧。当然这个CSS文件是我在原来官方的基础上修改的。你可能要对图片路径或者其它样式做修改以适合你的网站哦。
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type"/>
<meta id="MetaRefresh" runat="Server" http-equiv="Refresh" name="Refresh" />
<meta id="MetaDescription" runat="Server" name="DESCRIPTION" />
<meta id="MetaKeywords" runat="Server" name="KEYWORDS" />
<meta id="MetaCopyright" runat="Server" name="COPYRIGHT" />
<meta id="MetaGenerator" runat="Server" name="GENERATOR" />
<meta id="MetaAuthor" runat="Server" name="AUTHOR" />
<meta id="MetaRobots" runat="server" name="ROBOTS" />
<link rel="stylesheet" href="/images/housemenu.css" type="text/css">
<script src="/Resources/Shared/scripts/jquery/jquery.min.js" type="text/javascript"></script>
</head>
2、打开网站所使用的首页模板文件。我用的是默认皮肤MinimalExtropy。所以路径是Portals\_default\Skins\MinimalExtropy\index.ascx.打开
找到menu所在的位置
<dnn:NAV runat="server" id="dnnNAV" ProviderName="DNNMenuNavigationProvider" IndicateChildren="false" ControlOrientation="Horizontal" CSSControl="mainMenu" />
</div>
这是默认的导航栏,即上文所说的soplarmenu.我们不用它,将它换成housemenu,修改成如下
<dnn:HOUSEMENU runat="server" ID="HouseMenuNav" RootMenuOrientation="Horizontal" MaxDepth="88" RootDepth="0" MenuClientId="houseMenuH"/>
</div>
同时在index.ascx头部添加
3、修改完default.aspx,index.ascx.上传到服务器覆盖即可。
附件(包含一个文件夹,一个dll,一个css文件,之前的压缩包里dll有误,请重新下载)