Как добавить угловые страницы в Spartacus с верхним и нижним колонтитулами CMS?
В моем приложении Spartacus есть требование создать пару автономных страниц, которые не создаются через маршрут CMS, но это страницы Angular (с их маршрутами в Angular). Но эти страницы должны иметь верхний и нижний колонтитулы, как и другие страницы CMS (PDP, PLP и т. Д.). Можно ли расширить общие компоненты верхнего и нижнего колонтитула со страниц CMS для использования на страницах Angular?
1 ответ
Самый простой способ сделать это - создать пустую страницу CMS с шаблоном, содержащим верхний и нижний колонтитулы. Сама страница не обязательно должна иметь компоненты, так как вы напрямую запрограммируете их в angular.
Самый простой подход - создать корневой маршрут для этих страниц, например, "content":
Страница содержимого CMS должна быть настроена с /content
, так что все эти URL-адреса будут поддерживаться этой страницей содержимого CMS.
Кроме того, вы должны настроить угловой маршрут в своем приложении, который соответствует этим маршрутам. Вы можете использовать стандартные возможности угловой маршрутизации, включая дочерние маршруты. Последний, вероятно, позволит избежать дублирования вызовов одной и той же страницы CMS (но это из первых рук).
Альтернативный подход - использовать cmsPageGuard
, которому требуется объект данных с pageLabel
. Это дает преимущества: (1) отделить URL-адрес витрины от метки страницы в CMS и (2) нет необходимости использовать "корневой маршрут". Недостаток в том, что жестко запрограммированныйdata.pageLabel
должен соответствовать page.label
в CMS. Вот отрывок:
{
path: 'demo/static/page',
component: PageLayoutComponent,
data: { pageLabel: '/faq' },
canActivate: [CmsPageGuard],
}