在asp.net中设计自定义CMS的大型菜单的设计考虑因素

时间:2012-11-08 11:33:58

标签: asp.net database-design content-management-system megamenu

在设计可以处理Mega Menus结构的自定义CMS时,可以遵循的最佳做法是什么,我无法找到可以通过CMS的示例数据库设计清楚显示的示例。

我很感激,如果有人能指出一个很好的资源,其中包含数据库设计的例子以及asp.net web表单中的源代码,我可以灵活地使用数据库。

如果所有菜单都存储在一个表中,则很容易设计MegaMenu。在某些情况下,我必须从不同的表格构建Mega菜单,让我们以主菜单为例

主页|文章|新闻|关于我们|联系我们

我想以这样的方式构建菜单,以便它可以从不同的表中读取菜单详细信息,如

文章菜单:带图像的前3篇文章

新闻菜单:带图像的前3个新闻

联系我们菜单:应在两列或三列中显示与美国,加拿大,德国,印度,英国等不同国家/地区的办事处的链接。

到目前为止,我还没有找到任何可用作学习目的的有用示例,它显示了具有不同功能的CMS的基础架构设计,例如新闻,产品(例如性质不同)

我尝试研究wordpress,它实际上将页面/帖子存储在一个表中,并指定值类型的帖子或页面来区分,但在某些情况下,我们需要有不同的东西,比如需要存储在不同表中的产品。我很困惑如何创建一个Mega Menu系统,它可以从不同的表中读取菜单信息,而不是创建一个Separte菜单表,如果有一百个产品,这可能是一个真正的头痛。在这种方法中,我们必须更新与产品相关的表以及菜单表,这不是一个好的设计方法。

2 个答案:

答案 0 :(得分:2)

我建议你采用单表方法:

请参阅我刚才在dbpatterns上发表的这篇文章:http://dbpatterns.com/show//509bbcae89cbad253a2f5717/

所以现在内容明智

Example

ID: 1
Title: Article
item_link: home.aspx
parent: null
order: 1

ID: 2
Title: Article
item_link: page.aspx
parent: null
order: 2

ID: 3
Title: Article Number 1
item_link: page1.aspx
parent: 1 (ID of Article)
order: 1


ID: 4
Title: Article Number 2
item_link: page2.aspx
parent: 2 (ID of Article)
order: 2

ID: 5
Title: Article Number 3
item_link: page3.aspx
parent: 2 (ID of Article)
order: 3


ID: 6
Title: News
item_link: News.aspx
parent: null
order: 3

ID: 7
Title: News Number 1
item_link: News1.aspx
parent: 6 (ID of News)
order: 1


ID: 8
Title: News Number 2
item_link: News2.aspx
parent: 6 (ID of News)
order: 2

ID: 9
Title: News Number 3
item_link: News3.aspx
parent: 6 (ID of News)
order: 3

因此,当您构建菜单代码时,您将获得所有项目

循环遍历每个项目,没有父项构建顶级,然后通过父项添加每个项目,添加到父项目,并按顺序排序(注意顺序是每个子菜单)。

订购注意事项:顶级项目为1,2,3,4等......

子菜单项也会转到1,2,3但是对于它们所在的菜单项。

答案 1 :(得分:2)

您的问题非常非常模糊 - 但如果您想在.Net CMS中使用大型菜单,您可以使用LocalGov扩展程序查看Umbraco(http://kevin.thejumps.co.uk/2011/umbraco -localgov /)。即使您不使用它,您也可以看到其他人如何实现此功能。