1

我正在使用 AEM 6.1 SP2 ,我正在尝试在锚标记的 href 中启用“tel”属性以使点击通话功能正常工作。我已经在 htmlRules 节点下添加了 'htmlRules' 节点和 links 节点,其 'protocols' 属性为 [http://, https://, ftp://, tel:, mailto:, file://]

如链接中所述 - http://labs.6dglobal.com/blog/2013-01-11/configuring-telephone-tags-within-rich-text-components-and-link-checker/

rte.js 中的 'validateHref' 函数确实读取了 'protocols' 属性并验证了 'tel ' 属性是否有效,但不确定为什么在作者中单击 'ok' 时'tel' 属性不会保留在标记中对话。

这是锚标签 -

<a style="color: #6c6c6c; text-decoration: underline;" class="tel" href="tel:1234 567 891">1234 567 89</a>

这就是它在页面上呈现为标记的方式 -

<a style="color: rgb(108,108,108);text-decoration: underline;" class="tel">1234 567 89</a>

这是 'htmlRules' 节点 xml -

<htmlRules jcr:primaryType="nt:unstructured">
   <serializer jcr:primaryType="nt:unstructured">
      <cleanup jcr:primaryType="nt:unstructured">
         <pre
            jcr:primaryType="nt:unstructured"
            tagsToRemove="[\0]"/>
         <post
            jcr:primaryType="nt:unstructured"
            tagsToRemove="[\0]"/>
         <paste
            jcr:primaryType="nt:unstructured"
            tagsToRemove="[\0]"/>
      </cleanup>
   </serializer>
   <links
      jcr:primaryType="nt:unstructured"
      protocols="[http://,https://,ftp://,tel:,mailto:,file://]"/>
</htmlRules>
4

3 回答 3

1

这已修复覆盖 xssprotection 配置文件 -

/libs/cq/xssprotection/config.xml

/apps/cq/xssprotection/config.xml

并在正则表达式列表中添加“tel”属性

<regexp name="telURL" value="tel:[0-9]+"/>

<attribute name="href">
 <regexp-list>
  <regexp name="onsiteURL"/>
  <regexp name="offsiteURL"/>
  <regexp name="telURL"/>
 </regexp-list>
</attribute>

这已在博客中描述

https://experience-aem.blogspot.com.au/2015/05/aem-6-sp2-handling-custom-protocol-in-link-href-in-rte.html

虽然在那个博客和其他地方已经提到过

根据来自富文本小部件的输入在 HTL 中呈现电话链接

https://forums.adobe.com/thread/2329552

看起来配置文件存在于 -

/libs/sling/xss/config.xml

而不是在

/libs/cq/xssprotection/config.xml

甚至当我使用一个漂亮的组件时,

/libs/wcm/foundation/components/text/text.html

即使这样,在 /libs/sling/xss/config.xml 上覆盖配置文件也没有任何效果,我不得不在 /libs/cq/xssprotection/config.xml 上覆盖文件。我正在使用 aem 6.1 SP2。AEM的神秘方式

于 2017-08-01T00:58:30.450 回答
0

我们按照您共享的参考链接做了同样的事情,但是我们从对话框中传递了“href”值。ex href="tel: ${properties.propertyname}"。或者您可以尝试类似 href="${properties.propertyname}" 并从对话框“tel:123456789”中传递值。不确定这是否会对您有所帮助。谢谢。

于 2017-07-28T11:59:10.780 回答
0

您在问题中链接的解决方案似乎不适用于最新版本的 AEM。

现在负责删除的机制是hrefHTL telXSS 保护,它在写入之前扫描属性。避免这种情况的最简单方法是在富文本组件中禁用它:${properties.text @ context='unsafe'}. 虽然这不是最安全的解决方案,但最好通过以下步骤扩展 XSS 保护配置:

  1. 通过将 XSS 配置文件从库复制到应用程序来覆盖 XSS 配置文件:

/libs/cq/xssprotection/config.xml-> /apps/cq/xssprotection/config.xml /libs/sling/xss/config.xml->/apps/sling/xss/config.xml

  1. 使用新的正则表达式为 tel 添加协议:

<regexp name="telURL" value="tel:[0-9]+"/>

  1. 添加telURLregexp-listhref属性:

<regexp name="telURL"/>

  1. 进行这些更改后,可能还需要重新启动 AEM 实例。

如果出现问题,您可以在此博客页面和此Stackoverflow 帖子上阅读更多相关信息。

此外,链接检查器机制仍可能在编辑模式下将您的链接标记为无效,并且在发布时可以将其删除。

根据您是否需要它使其适用于应用程序中的一个或所有特定锚点或所有锚点,您可以:

  • 为您的锚添加x-cq-linkchecker="skip"属性,正如 i.net 在您帖子下的评论中所建议的那样
  • 或者,如果您想允许添加tel到页面上的任何可能的锚点,请在Day CQ Link Checker Service OSGI 服务中添加异常tel: 特殊链接前缀。请注意,服务配置需要应用于所有作者和发布实例。
于 2017-07-28T11:42:25.490 回答