用ColdFusion和JavaScript创建递归动态菜单树

ZDNet软件频道 时间:2004-05-13 作者:Builder.com |  我要评论()
本文关键词:
静态内容已经成为过去——如今的Web站点全部保持着最新的流行趋势。在我最近的一个企业内部网工程中,我创建了一个内部网站,并开发了一种动态填充菜单。
本文译自Builder.com,未经许可请勿转载

静态内容已经成为过去——如今的Web站点全部保持着最新的流行趋势。在我最近的一个企业内部网工程中,我创建了一个内部网站,并开发了一种动态填充菜单。这样可以使为在每次添加新内容而管理链接时无需打开HTML文件。无论对我还是内容拥有者,这都使更新菜单少了很多的麻烦。

当能够相对容易的写出HTML/JavaScript菜单时,为什么还要仔细研究在ColdFusion里创建动态菜单的问题?当然,我们已经用HTML和JavaScript创建了菜单,只需要根据要求修改代码,但这样有什么乐趣?更重要的是,维护程序的方式并不是我想要的。我不希望永远被工程系住,我所在的小组规模很小,并且有很多项目,所以没有时间来维护旧的工程。最终用户和我提出的菜单应该易于管理,并且在页面中只占有很少的初始空间(有三个树状部分接入)。之所以要考虑空间问题是因为站点有很多嵌入的部分,每个部分又含有几个嵌入部分……你会看到我怎么做的。

编写代码之前

我们从设计数据库开始。只有在知道数据库是如何设计的之后,我们才能写出访问数据库的代码。我们只需要两个不存贮程序或其他东西的表格来完成我们的菜单(尽管对于在菜单中管理数据来说,存贮程序是最简单的办法)。所以从本质上来说,你可以使用任何你喜欢的数据库系统。

Figure A 显示了我们将用于菜单的数据表。表格MENU_ITEMS是存放所有实际菜单树的地方。菜单名 (menu_item_name)、HREF (menu_item_url)与主键值(menu_item_id)保存在一起。表格MENU_ITEMS_XREF维护树的自身结构。menu_item_idchild_id从MENU_ITEMS表格中调用menu_item_id。当在child_id栏中存在一个ID时,这表明这个ID会被嵌套在menu_item_id栏的条目下。Figure B表明了这种原理。

相关软件

表格MENU_ITEMS_XREF最后一栏是sort_order域。最初我只是用生成菜单的菜单查询来处理排序(按字母顺序)。尽管你可能不知道,但对事务单元应该有不同的考虑。所以这里有sort_order域。这能使内容所有者把更重要或被频繁访问的主题放于页面顶部。



百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134