Заменить или добавить ссылку - PullRequest
1 голос
/ 31 августа 2011

Я работаю над старым решением 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?

1 Ответ

0 голосов
/ 19 октября 2011

Насколько я понимаю, вы хотите найти и преобразовать ссылки в ссылки.

Я вижу это как ваши параметры: 1. Xpath 2.0 поддерживает такие функции, как совпадения и замены, которые используют регулярные выражения. См. http://www.w3schools.com/xpath/xpath_functions.asp#string или http://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. Найдите и замените значения Message до или после того, как оно попадет в XSL-преобразование непосредственно перед тем, как отобразить вывод.

Что нужно для чего:

  1. Почему у вас есть URL-адреса, которые не отображаются в тегах "Ссылки в сообщении"? Это тот случай, когда вы не используете WYSIWYG для контента?
  2. Если это кажется слишком большой работой, похоже, что это так. Вы можете иметь обходной путь, чтобы иметь JavaScript в конце страницы. Который просто найдет и заменит ссылки на ссылки. Убедитесь, что вы не удвоитесь. Регекс твой друг здесь.
...