Глядя на глобальный вопрос, который звучит так: «Как я могу сделать пользовательский серфинг моим сайтом лучше?» Я могу три важных ответа:
- Очевидная навигация или главное меню. Особенно, когда там много ссылок. Решения могут различаться: простые ссылки, вкладки, раскрывающиеся меню и т. Д.
- Использование панировочных сухарей . Люди должны иметь возможность подняться на уровень выше (хотя это не всегда действие «Назад»).
- История. Внедрение пользовательской истории может быть полезным, например, для интернет-магазина, - чтобы показать ранее просмотренные вещи надежным и удобным способом.
Обратите внимание, что история - это задача № 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>
Очевидно, что если вы хотите показать ссылки «Предыдущая / Следующая», вам следует изменить способ хранения истории, возможно, сохранить текущую позицию страницы (в массиве) - чтобы выбрать предыдущий и следующий элементы. Хотя как Пользователь я не нашел бы такую функцию очень полезной.
Наконец, если вы хотите сохранить историю между сеансами, просто запишите этот набор данных в базу данных, идентифицированную по идентификатору пользователя (fk), и восстановите ее, когда пользователь войдет в систему.
Пожалуйста, помните, что настоятельно рекомендуется использовать блокировку при чтении / записи.