Menu还可以这样玩~
Menu是网站中的一个重要元素,即能体现网站的主题也起到一个导航的作用,这应该是用户在浏览网站时使用最频繁的一个东西,所以DNN默认就为我们提供了SOLPARTMENU和NAVMENU,以方便我们建立网站,我们也开发了对用户更友好的JDMENU和JAccordion。在DNN站点中新建一个页面后,Menu中就可以显示这个页面的名字,非常简单。这种简单也给Menu的自定义带来了一些局限性,如:Menu项的样式只能保持一致、交互效果也只能是一个样,如果想让每个Menu项前有一个不同的Icon、想点击Menu后弹出一个自定义的窗口或是一个提示框,可以做到吗~ 当然可以,而且操作很简单,先看看这个demo:http://dnn495.intranet.alldnnskins.com/study/
DNN页面设置中有一个Link Type设置,其中可以设置链接的类型为None、URL、Page或File,在URL项中可以写自定义链接地址,正是这个地方为Menu的自定义带来一些方便。
下面是JDMENU中每个Menu项的默认html代码(JAccordion也一样):
在Link Type的URL项中填入的内容将会出现在href后面的单引号内,第一个引号定义href属性值的开始,第二个引号定义这个值的结束位置,明白了这个道理接下来要自定义一些东西就很容易了。
如在URL设置中填入下面的内容:
http://www.baidu.com' target='_blank
在JDMENU中的html代码就会是这个样子:
这就为Menu加了个target属性让链接在新窗口中打开。
在URL设置中填入下面的内容:
http://www.baidu.com' class='menu-item1' title='About Us
对应的JDMENU中的代码就是:
你可以为这个a标签加上它允许所有属性,用class属性来自定义样式、用title属性来添加提示、或用onclick、onmouseover等事件属性来执行你想得到的任何javascript代码。不只是可以添加属性,还能添加内容。
如在URL设置中填入:
http://www.baidu.com'>

用这个方法进行Menu的自定义时还是有个局限,因为在Link Type的URL项中填入的内容也会出现在BreadCrumb处,也许在Menu上添加的样式和脚本事件并不需要同样应用于BreadCrumb处,所以在最好不要把样式或事件脚本直接添加在这儿,只在这里写入一个class属性,根据这个class值和JDMENU默认的class值就能单独只针对Menu添加样式或脚本,而不影响到BreadCrumb处。
还有一个小问题,在Menu中a标签的href属性值是用''单引号包含的,而BreadCrumb中a标签的href属性是用""双引号包含的,那刚才针对Menu填的内容在BreadCrumb中就出问题了,需要修改JDMENU模块来解决这个问题,让a标签中的引号与BreadCrumb处保持一致,余钊已修改,安装最新修改的JDMENU后就能运用上面的方法来对Menu进行一些自定义,不会与BreadCrumb冲突:)
注:安装最新修改的JDMENU后在自定义时需要把上面的单引号都改为双引号。