可以在CMS(后端)中使用pageLabel配置内容页面的URL。这些页面标签无法本地化。您可以在Spartacus中为非内容页面配置URL。这些主要与产品和类别页面有关。您可以将产品名称等属性配置为URL的一部分。例如,产品页面的默认配置是storefront.com/product/1234,但您可以配置URL以包含与产品相关的数据,例如产品或类别标题。可配置的URL通常有助于改进SEO,但也可用于帮助将现有解决方案迁移到Spartacus:客户可以保留其现有URL并在Spartacus中配置等效的URL。site-context-url-serializer.ts(SiteContextUrlSerializer)这样定义了一个接口,表示url参数支持多个。exportinterfaceSiteContextUrlParams{[name:string]:string;}下面的代码演示了如何使用装饰器设计模式修改Angular标准的UrlTree:新增字段siteContext对应的数据类型。urlExtractContextParameters从输入的浏览器地址栏中提取上下文参数列表url:使用正则表达式分隔url和查询部分:urlEncodingParameters这是一个getter:/***URL中编码的站点上下文参数的名称*/protectedgeturlEncodingParameters():string[]{返回this.siteContextParams.getUrlEncodingParameters();}从评论来看,它只包含参数名称。通过注入siteContextParams获得。后者是从全局配置对象中获取的:getUrlEncodingParameters():string[]{return(this.config.context&&this.config.context.urlParameters)||[];}这个getter的值是一个字符串数组,包括三个元素:baseSite、language和currency获取config对象中配置的baseSite的值:最终结果:parse返回给定URL经过识别参数缩短后的UrlTree,但将参数值保存在UrlTree的自定义属性中:siteContext。这个方法由AngularRouter框架调用。将站点上下文保存到urlTree结构的自定义属性字段siteContext中:最后解析的结果:serialize也会被AngularRouter框架调用。传入的Urltree数据结构已包含siteContext自定义属性的值:/***返回存储在UrlTree的自定义属性*中的站点上下文参数:`siteContext`。*/urlTreeExtractContextParameters(urlTree:UrlTreeWithSiteContext):SiteContextUrlParams{返回urlTree.siteContext?urlTree.siteContext:{};}最终的序列化url:
