Для создания меню и хлебных крошек вам нужно было бы справиться с этим самостоятельно, в конечном итоге с помощью события SiteMap.Resolve на SiteMapProvider для динамического подключения вашего "несуществующего"pages.
Что касается маршрутов, в C1 есть функциональность, которая разбирает URL-адрес на первую «реальную страницу» и передает вам лишнюю часть URL-адреса, с которой вы можете работать.Допустим, / myshop был вашей страницей магазина, и пользователь запросил / myshop / clothes, тогда все равно будет / myshow, который будет выполнен, и вы добавите туда код, который будет обрабатывать ваши категории.
Код, который будет извлекать «одежду» на вашей странице «myshop», будет Composite.Core.Routing.Pages.C1PageRoute.GetPathInfo()
, и чтобы поручить C1 не выдавать ошибку 404, вы вызываете Composite.Core.Routing.Pages.C1PageRoute.RegisterPathInfoUsage()
, чтобы C1 узнал, что «одежда»"была допустимой категорией.
Подробнее об API для нее здесь .
Если вам нужно обрабатывать разные ситуации, когда выбирается категория и когдапользователь просто нажимает / myshop напрямую, вы устанавливаете страницу MyShop для использования определенного шаблона, и там вы оборачиваете элемент <rendering:contentplaceholder>
в функцию, которая имеет какую-то логику else-if.Если категория не выбрана, распечатайте содержимое <rendering:contentplaceholder>
, в противном случае выполните некоторые поиски на основе категории и вместо этого распечатайте другое содержимое.