Вложенные подстановочные знаки для обработки виртуальных элементов в Sitecore

TLDR; Каков наилучший или рекомендуемый способ работы со сложными виртуальными элементами на нескольких уровнях?

В настоящее время я работаю над чем-то, что вместо использования переменных строки запроса для фильтрации свойств, я просто хотел бы расширить URL-адрес и разрешить фильтрацию этих URL-адресов.
События:
~/events/2012/april или
~/events/lunches или
~/events/6CB27D08-358E-49AA-8107-16A50E963C70

В настоящее время у меня есть настройка подстановочного знака для обработки последнего случая или года, но я столкнулся с проблемой подстановочного знака, обрабатывающего только один уровень, поэтому я не могу обработать /events/{0}/{1} только с одним подстановочным знаком. Кроме того, я считаю, что общий дружественный URL-адрес будет /events/2012/april/<external_id>_<event_name>

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

Events/
        *
          *
            *

Есть ли лучший способ или более рекомендуемый способ работы со сложными виртуальными элементами на нескольких уровнях?


person al3xnull    schedule 02.05.2012    source источник


Ответы (2)


Здесь вы находитесь на правильном пути, и вы правы в том, что вам понадобится подстановочный знак для каждого сегмента URL-адреса. Однако наличие подстановочного знака не означает, что вам нужно его использовать. Другими словами, элемент /events/*/* будет обрабатывать URL-адрес /events/2012/april.

Вы можете просмотреть этот пост в блоге http://www.sitecore.net/Community/Technical-Blogs/Getting-to-Know-Sitecore/Posts/2011/09/Wildcards-and-Data-Driven-URLs.aspx, который ведет к модулю подстановочных знаков.

person Sean Kearney    schedule 02.05.2012
comment
Все еще застрял с рассмотрением моих дел три раза таким образом. Кажется противоположным тому, что означает *, но я уверен, что у Sitecore есть причина, по которой это так. Мне очень нравится модуль подстановочных знаков, поскольку конфигурация остается в Sitecore, а не в файле конфигурации. - person al3xnull; 04.05.2012
comment
Модуль подстановочных знаков работал у нас изначально, но просто не мог заставить его хорошо работать с остальными элементами управления навигацией на сайте. - person al3xnull; 13.07.2012

Есть ли конкретная причина для использования подстановочных знаков? Я думаю, вам лучше переписать URL-адрес, если вы используете подстановочные знаки более чем на 1 уровень.

Так что сделайте только элемент /events и перепишите /events/{0}/{1} в /events?year={0}&month={1}

person Ruud van Falier    schedule 02.05.2012
comment
Я начал использовать элементы с подстановочными знаками, потому что мои события не являются элементами в системе, а представляют собой элементы, основанные на API для внешнего хранилища, поэтому это был простой способ дать URL-адреса событиям. - person al3xnull; 02.05.2012
comment
Рууд, вы знаете, как заставить перезапись URL работать с Sitecore? Когда правила включены, он просто ломает страницы Sitecore (я предполагаю, что Sitecore сначала выполняет запрос, а не модуль перезаписи URL). - person al3xnull; 13.07.2012
comment
По моему опыту, модуль перезаписи IIS выполняется до конвейеров Sitecore. (в моих правилах включена функция stopProcessing=true, но это не должно влиять на Sitecore) - person Ruud van Falier; 17.07.2012