替换或附加到链接

发布于 2024-12-02 10:11:15 字数 373 浏览 1 评论 0原文

我正在开发一个旧的 Sitecore 4 解决方案,我需要稍微操纵一个字段的输出。我有一个普通字段(消息),我通过 .

两者都可以正常工作。

我现在必须在“消息”字段中搜索链接,然后我需要将日期附加到链接的末尾,如下所示“这是我的链接

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

I am working on an old Sitecore 4 solution where i need to manipulate the output of a field slightly. I have a normal field (Message) that i am outputting via <sc:html field="message"/> or <xsl:value-of select="sc:fld('Message',.)"/>.

Either works just fine.

I now have to search in the "Message" field for links, and then i need to append the date to the end of the link like so "<a href="http://www.thisismydomain.com?utm_campaign=01-01-2011">this is my link</a>

How could i accomplish the above in XSLT 1.0?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

养猫人 2024-12-09 10:11:15

我的理解是你想要查找并将网址转换为链接。

我认为这些是您的选择:
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 转换之前或之后查找并替换 Message 值。

事情的目的是什么:

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

My understanding is that you want to do a find and convert urls to links.

I see these as your Options:
1. Xpath 2.0 supports functions like matches and replace which use regular expressions. See http://www.w3schools.com/xpath/xpath_functions.asp#string or http://www.w3.org/TR/xpath-functions/#func-replace. I'm not sure if sitecore supports Xpath 2.0. From memory i dont think it supports Xpath 2.0. If it does you are in luck and you can do something similar like this

<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. Find and replace the Message values before or after it gets to XSL transformation just before you render the output.

Things to what out for:

  1. Why do you have URLs without showing up as Links in Message tag? Is it a case where you are not using WYSIWYG for content?
  2. If this seems to be too much work, which sounds like it is. You can have a workaround to have a javascript at the end of the page. Which will simply find and replace URLs to links. Make sure you don't double up. Regex is your friend here.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文