【问题标题】:Replace or append to link替换或附加到链接
【发布时间】:2011-10-19 07:23:34
【问题描述】:

我正在开发一个旧的 Sitecore 4 解决方案,我需要稍微操纵字段的输出。我有一个通过<sc:html field="message"/><xsl:value-of select="sc:fld('Message',.)"/> 输出的普通字段(消息)。

两者都可以正常工作。

我现在必须在“消息”字段中搜索链接,然后我需要将日期附加到链接的末尾,例如“<a href="http://www.thisismydomain.com?utm_campaign=01-01-2011">this is my link</a>

如何在 XSLT 1.0 中完成上述任务?

【问题讨论】:

  • Icky icky 如果这就是它的样子并且消息字段包含转义标记。如果是这种情况,您将无法可靠地做到这一点。解析所有输入并在整个树上进行 XSL 处理要好得多。如果您使用@xslt 标记了问题,甚至不要考虑正则表达式。
  • “消息”字段是 Sitecore 中的富文本字段。
  • 你可以添加一个xsl扩展方法并在那里进行处理吗?
  • 我可以完全控制 xslt 文件和整个解决方案,所以我基本上可以做什么?
  • 您是否考虑过在客户端使用 jQuery 之类的东西将日期查询附加到链接的渐进式增强?

标签: xslt sitecore


【解决方案1】:

我的理解是你想做一个查找并将 url 转换为链接。

我认为这些是您的选择: 1. Xpath 2.0 支持匹配、替换等使用正则表达式的函数。请参阅http://www.w3schools.com/xpath/xpath_functions.asp#stringhttp://www.w3.org/TR/xpath-functions/#func-replace。我不确定 sitecore 是否支持 Xpath 2.0。从记忆中我认为它不支持 Xpath 2.0。如果是这样,你很幸运,你可以做类似的事情

<xsl:choose>
            <xsl:when test="contains(., 'http.*')">
              <strong><xsl:value-of select="replace(.,'http.*','REPLACED TEXT')"/></strong>
            </xsl:when>
            <xsl:otherwise>
              <xsl:value-of select="."/>
            </xsl:otherwise>
          </xsl:choose>
  1. 在您呈现输出之前,在消息进入 XSL 转换之前或之后查找并替换消息值。

为了什么目的:

  1. 为什么您的 URL 没有在消息标记中显示为链接?是不是您不使用所见即所得的内容?
  2. 如果这看起来工作量太大,听起来确实如此。您可以有一个解决方法,在页面末尾添加一个 javascript。它将简单地查找和替换链接的 URL。确保你不要加倍。正则表达式是您的朋友。

【讨论】:

    猜你喜欢
    • 2011-08-18
    • 1970-01-01
    • 1970-01-01
    • 2020-06-14
    • 2011-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-17
    相关资源
    最近更新 更多