看看听起来像“我怎样才能让用户更好地浏览我的网站?”这样的全球性问题?我可以回答三个重要的问题:
- 明显的导航又名主菜单。特别是当你有很多链接时。解决方案可能会有所不同:普通链接、标签、下拉菜单等。
- 使用breadcrumbs。人们应该能够升级(尽管它并不总是“返回”动作)。
- 历史。实施自定义历史记录可能很有用,例如对于电子商店 - 以可靠且方便的方式显示以前查看过的内容。
请注意,历史是任务 #3,而不是 1 或 2。解释这一切的原因是您的历史不应该为 #1(绝对)和 #2(有时可能是)。
基本上可以通过两种方式存储历史记录:仅用于当前会话(对于任何用户)和会话之间(通常用于已登录用户)。
最简单的方式来实现第一种方式是使用 ColdFusion 会话。创建会话时(onSessionStart() 如果使用 Application.cfc)初始化容器,我会使用数组。
考虑以下示例:
<cfscript>
session.history = [];
</cfscript>
当用户打开新页面时(即使在新标签页中——这会启动新的浏览器历史记录)——将页面信息推送到容器中(页面至少应该包含链接和标签类型):
<cfscript>
page = {};
page.link = "/index.cfm?product=100";
page.label = "Product Foo";
ArrayAppend(session.history, page);
</cfscript>
最后,在页面模板的某个地方循环这个数组并显示链接:
<cfloop array="#session.history#" index="page">
<div><a href="#page.link#">#HTMLEditFormat(page.label)#</a></div>
</cfloop>
显然,如果你想显示上一个/下一个链接,你应该修改存储历史的方式,也许也保持当前页面位置(在数组中)——选择上一个和下一个元素。虽然作为一个用户我不会觉得这样的功能很有用。
最后,如果您想存储会话之间的历史,只需将此数据集写入由用户 id (fk) 标识的数据库中,并在用户登录时恢复。
请记住,强烈建议在读/写时使用锁定。