这个问题与我的previous question有关。根据我的要求,我对数据库进行了一些修正,但我仍然不确定如何创建子菜单(需要从另一个表而不是主pg_Pages
表创建。
我将页面信息保存在pg_Pages
我可以创建菜单的位置。我的问题是,我可以轻松地为“关于我们”和“多媒体”创建子菜单,因为我将这些页面存储在pg_Pages
表中,但我需要从News
创建子菜单。 News Category
表并将它们链接到正确的页面处理程序。 &安培;问题来自magazine
表。
菜单示例
样本数据
pg_Pages Table
PageID PageName LangID PagePositionNo PageURL PageInheritance
1 Home 1 10 Default.aspx 0
2 About Us 1 20 Page.aspx 0
3 PageOne 1 10 Page.aspx 2
4 PageTwo 1 20 Page.aspx 2
5 Multimedia 1 30 Page.aspx 0
6 Video 1 10 Videos.aspx 5
7 PhotoGallery 1 20 Gallery.aspx 5
8 News 1 40 News.aspx 0
9 Issues 1 50 # 0
10 Publication 1 60 Page.aspx 0
11 SpanishHome 2 10 Default.aspx 0
12 SpanisAbout Us 2 20 Page.aspx 0
------------------------------------------------------------------------------
Magazine
MagazineID MagazineIssueCode LangID MagazineTitle MagazineLiveIssue(CurrentIssue)
1 101 1 Mag Title 0
2 102 1 Mag Title 1
3 101 2 SpanisgMag Title 0
4 102 2 Mag Title 1
------------------------------------------------------------------------------
art_Article Table
ArticleID ArticleTitle ArticleCatID MagazineID Language TYPE
1 Article one 100 1 1 Artile
2 Article two 100 1 1 Artile
3 Article three 200 1 1 Artile
4 Article four 300 1 1 Artile
5 Article Five 100 2 1 Artile
6 EditorMessage 300 2 1 EditorMessage
7 Article seven 200 2 2 Somthing
------------------------------------------------------------------------------
我希望我的设计足够灵活,可以从不同的表中读取菜单。我应该采取什么样的方法/改变来正确地完成它,而不是为所有菜单创建一个单独的表格。将它们链接到页面?请为此方案建议最佳方法。
我希望系统非常灵活,直接从数据库中读取菜单信息,而不是根据IssueID
或其他ID创建静态链接和触发查询。
News Menu
基本上显示了文章的类别。此外,我需要一个查询,该查询仅显示News
菜单下的类别,其中包含针对该特定问题的文章。假设问题102没有任何与 文化 相关的文章,那么文化子菜单不应该出现在新闻中。
答案 0 :(得分:4)
对于通用CMS,应该有一个单独的菜单表和一个相关的MenuItems表。
可以有不同类型的菜单 - 顶部/主菜单,内部左侧菜单,网站页脚等...您应该定义它们在菜单表中。
你应该有一个递归的 MenuItems 表,它可以有无数个子菜单项。
菜单表至少应包含以下列:
MenuItems表至少应包含以下列:
希望它有所帮助...
答案 1 :(得分:3)
您的任务是将您的网站实例映射到菜单实例。这可以通过View轻松完成。
因此,例如,使用以下列创建viewMenu
:MenuItemId
,MenuItemName
,MenuItemLevel
,MenuItemParent
,MenuItemUrl
。您可以操纵这些属性以在代码中创建菜单。您还可以使用SQL查询创建初始视图来处理当前数据库结构或任何未来结构中的数据。
就目前而言,您可以将三个不同查询的结果合并到三个表中。将来,您可以在菜单更改视图中添加功能。在向数据库添加新表时,还可以在菜单中添加新项目。