Отображение маршрута Sitecore на элемент / контроллер
У меня есть сайт Sitecore 7.1, и я пытаюсь выяснить, как лучше всего реализовать поиск по тегам для блога.
В идеале я хотел бы иметь такой URL-адрес: / tags / tag-go-here
В моем дереве содержимого должен быть элемент sitecore/content/home/tags, чтобы я мог редактировать содержимое и т. Д. С помощью Sitecore. Я хотел бы, чтобы все маршруты, подобные приведенным выше, были сопоставлены с элементом и были бы в состоянии каким-то образом получить параметр "tag-go-here" в мой контроллер / рендеринг.
Я пытался использовать маршруты, но я не уверен, что это правильный подход. Он отображается на простом контроллере, но я могу ошибаться. Я добавил следующий маршрут для этого:
routes.MapRoute(
"Tags",
"tags/{tag}",
new
{
controller = "Tag",
action = "Index",
tag = UrlParameter.Optional,
});
Это работает, но не совсем то, что я хочу. Он просто отображает мое представление в браузере, но я не могу использовать Sitecore для добавления к нему каких-либо визуализаций или контента, поскольку в Sitecore нет соответствующего элемента. Как лучше всего подойти к этому в Sitecore MVC?
Благодарю.
1 ответ
Указав маршрут таким, какой вы есть, и указав контроллер, вы фактически обходите Sitecore. См. Раздел 4.1 Руководства для разработчиков Sitecore MVC.
Вы можете использовать элементы подстановки (раздел 1.2.6 документа " Повторное использование и обмен данными") для обработки тегов, это позволит вам работать с элементом как с любым другим элементом Sitecore и добавлять макет / рендеринг / правила и т. Д.
Вы можете найти несколько соответствующих примеров здесь: Sitecore MVC Music Store, это пример Sitecore 6.6, но концепции все те же.
Вы также можете взглянуть на модуль Wildcard, но, глядя на исходный код, я не уверен, что он будет работать с MVC, так как есть некоторый специфичный для WebForms код, но его должно быть достаточно легко изменить.