如何避免对 CQ 中页面的所有链接进行硬编码 .html 扩展?

How to avoid hardcoding .html extension across all the links for pages in CQ?

在我们的项目中,我们在很多对话框中都有一个路径字段,用于 refers/links 到页面的各种自定义组件。在 jsp 中获取此路径字段的值后,我们将在其上手动添加 html 扩展。 例如

<a href="${properties.tab1_button1_Url}.html" target="_blank" class="btn gb-primary-btn-small aw">${properties.tab1_button1_Title}</a>

如何避免对所有链接进行硬编码 ".html" 扩展并从 CQ 自动将其附加到所有链接?我们有这方面的配置吗?或者我们需要创建任何实用程序吗?欢迎提出建议。请注意:解决方案必须适用于 CQ 5.5。

您可以创建自己的Transformer component service, where you can check the attribute href (or you custom attributes) of the anchor tag (a tag). If the link is referecing an relative/internal existing path, than you can alter it by adding .html extension (or for example create absolute link). An example implementation can be found here

pathfield xtype 有一个名为 linkpattern 的配置选项。这允许您将小部件配置为自动添加扩展以防使用浏览字段到select link。如果用户键入 text ,则不会添加扩展名。使用此选项添加“.html”,所有内部 link 都将附加 .html(假设内容作者始终使用路径字段的浏览选项 select link [他们应该做的])。这样后端代码就不必负责检查 link 是外部还是内部并附加扩展名。

property : "linkPattern" , value : "{0}.html" (String)

参考:http://docs.adobe.com/docs/en/cq/5-6/widgets-api/index.html?class=CQ.form.PathField