OpenCube QuickMenu和 Web.sitemap

分享于 

4分钟阅读

Web开发

  繁體

t

介绍

也许你已经听说过关于 http://www.opencube.com/插件及其菜单项目。 酷酷不过他们的菜单还是自己开的。 因此,通过 ASP.NET web应用程序的Web.sitemap 文件,实现了两个类来学习它们的菜单'通话'。 使用HTML类 ykorotia_eu.Web.HTMLwriter 生成这个菜单,并将代码Fragment指定为 ykorotia_eu.OpenCube.QuickMenu

在我的个人页面上可以看到一个工作示例: ykorotia.eu

使用代码

下面是一个带有菜单的测试和工作页面:

======== Default.aspx =======<htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat="server"><title></title><linkhref="OpenCube_QuickMenu/1.css"rel="stylesheet"type="text/css"/><scriptsrc="OpenCube_QuickMenu/MenuInit.js"type="text/javascript"></script><scriptsrc="OpenCube_QuickMenu/Core.js"type="text/javascript"></script><scriptsrc="OpenCube_QuickMenu/Add-On/RoundedItems.js"type="text/javascript"></script><scriptsrc="OpenCube_QuickMenu/Add-On/RoundedCorners.js"type="text/javascript"></script><scriptsrc="OpenCube_QuickMenu/Add-On/MergeAnimation.js"type="text/javascript"></script></head><body><formid="form1"runat="server"><div><%=ykorotia_eu.OpenCube.QuickMenu.GetMenuFromSitemap() %><scripttype="text/javascript"> qm_create(0, false, 0, 500, false, false, false, false, false);
 </script> DEFAULT
 </div></form></body></html>

background 菜单如下所示:

==== QuickMenu.cs ====publicstaticstring GetMenuFromSitemap()
{
 SitemapLevel lvl = SitemapLevel.three;string qmDivider = "[qmDivider]";
 string qmTitle = "[qmTitle]";
 string qmCss_Parent = "qmparent";
 StringBuilder sb = new StringBuilder();
 ykorotia_eu.Web.HTMLwriter wri = new ykorotia_eu.Web.HTMLwriter();
 //prelude//<ul id="qm0" class="qmmc" sb.Append(wri.AddTag("ul","qmmc","", "qm0"));
 // Doing from ROOT and so on//p.s. Root node is hiddenif (SiteMap.RootNode.HasChildNodes && lvl >= SitemapLevel.one)
 {
. . ......

其中 SitemapLevel 允许你指定我们从 Web.sitemap 读取菜单节点的深度。

要启用'标题','分隔线'等功能,请使用描述参数:

==== Web.sitemap ====<?xmlversion="1.0"encoding="utf-8"?><siteMapxmlns="http://schemas.microsoft.com/AspNet/SiteMap-File-1.0"><siteMapNodeurl="~/"title="root"description=""><siteMapNodeurl="~/1/1.aspx"title="I-CONTENT"description=""><siteMapNodetitle="Online Tools"url="~/1"description="[qmTitle] | [qmDivider]"/><siteMapNodetitle="Online Tools"url="~/1/"><siteMapNodetitle="IPv4toNumber"url="~/1/2.aspx"/></siteMapNode></siteMapNode></siteMapNode></siteMap>

最深的HTML生成始于 HTMLwriter.cs。

Web.sitemap 需要有唯一的url,但是有时候,菜单中的第一个链接应该是不可点击的。 你可以通过将这里代码放在 QuickMenu.cs 中来实现这里目的:

//.....// Doing from ROOT and so on//p.s. Root node is hiddenif (SiteMap.RootNode.HasChildNodes && lvl >= SitemapLevel.one)
{
 //=== 1st LEVEL ===#region 1st levelforeach (SiteMapNode child_nodes1 in SiteMap.RootNode.ChildNodes)
 {
 // main menu nodes sb.Append(wri.AddTag("li") + wri.AddLink(child_nodes1.Title, 
 //child_nodes1.Url - ignoring url in web.sitemap"javascript:void(0);", 
 qmCss_Parent, "", false));
.....

历史记录

  • 第一版:添加了一些提示。

相关文章