Получить реферал (ссылку) - PullRequest
1 голос
/ 26 мая 2011

У нас есть сайт sitecore, и нам нужно знать элемент, с которого ссылка привела вас на страницу X. Пример:
Вы находитесь на странице A и щелкните ссылку, предоставленную элементом X, которая приведет вас к странице B.
На странице B нам нужно, чтобы этот элемент X направил вас и, таким образом, получил доступ к элементу и его свойствам.

Это может пройти через сеанс, контекст Sitecore, я не знаю, что и нам даже сам элемент не нужен, только идентификатор.

Кто-нибудь знает, как этого добиться?

Ответы [ 2 ]

2 голосов
/ 26 мая 2011

Из обсуждения в комментариях вы столкнулись с проблемой веб-архитектуры, которая не является специфической для Sitecore.

У вас есть серверная часть, которая использует несколько элементов данных для создания некоторого HTML, который отправляется клиенту. Каждый из этих элементов данных может создавать ссылки в HTML. Они могут создавать идентичные ссылки. Источником HTML-страницы считается только один из элементов.

Вы не хотите знать, какой из этих предметов создал ссылку. Ваш единственный вариант - найти способ идентифицировать созданные ссылки. Для этого вам придется добавить некоторую форму информации о тегах к создаваемому URL (например, строку запроса), которую можно интерпретировать при обработке запроса на URL. Сами предметы не существуют в клиенте.

Проблема была бы точно такой же, если бы ваши ссылки были созданы запросом к базе данных. Если вы хотите узнать, какая запись создала ссылку, вам нужно добавить к ней идентификатор.

Вероятно, вы могли бы разработать систему, которая позволяла бы вам идентифицировать элемент в большинстве случаев времени (т. Е. Когда ссылка, на которую нажимали, была уникальной для этой страницы), но это потребовало бы либо кэширования большого количества данных в сеанс (список созданных ссылок и элементов, которые их создали) или повторный запрос на ссылающийся URL. И то, и другое может показаться хлопотным для неидеального решения, которое может существенно замедлить работу вашего сервера.

0 голосов
/ 27 мая 2011

Джеймс прав: ваши исходные параметры практически невозможно удовлетворить.

Однако при некотором взломе и замене стандартных провайдеров Sitecore вы можете отследить их. Но было бы намного проще использовать какой-либо идентификатор строки запроса.

В нашей системе у нас есть сторонние рекламные ссылки ... у них есть клиентский javascript, который фактически отправляет запрос на локальную страницу, а затем перенаправляется на целевой URL. Поэтому, когда вы наводите указатель мыши на ссылку, в строке состояния отображается сообщение: «http://whatever.com". .. она отображается , ссылка идет на what.com, но на самом деле вы сначала http://ourserver/redirect.aspx мы можем отследить эту ссылку, а затем получить Response.Redirect ().

Вы можете сделать что-то подобное, предоставив свой собственный LinkManager и включив генерирующий идентификатор элемента в URL-адрес отслеживания, а затем перенаправив на фактическую страницу / элемент, который хочет пользователь.

Однако ... это кажется довольно запутанным и подверженным ошибкам, и я бы не рекомендовал его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...