URL страницы отображения SharePoint xslt - PullRequest
2 голосов
/ 11 сентября 2011

Я перешел по этой ссылке http://spyralout.com/2009/03/16/current-page-url-using-xsl-for-content-query-web-part/

Я хочу отобразить значение строки запроса на своей странице.Для этого я нашел одно решение для stackoverflow, которое я нашел немного сложным. Итак, мой подход:

1) Получить текущий URL

2) Использовать substring-after для этого URL, чтобы получитьзначение строки запроса ..

Я могу объяснить это, например,

URL моей страницы www.stackoverflow.com/questions.aspx?display=18..Я хочу отобразить 18на моей странице ...

Что я уже сделал ...

1) Я добавил пространство имен в xslt xmlns: ddwrt = "http://schemas.microsoft.com/WebParts/v2/DataView/runtime"

2) Добавленопараметр

<xsl:param name=”PageUrl” />

3) Добавил это значение в переменную

<xsl:variable name=”DetailPageLink” select=”$PageUrl” />

4) Теперь, когда я пытаюсь использовать это вподстрока после, она не отображает никакого значения ...?

<xsl:value-of select="substring-after($DetailPageLink,'=')" />

5) Я также пытался

<xsl:value-of select="$DetailPageLink" />, но это не дает никакого значения..?

Есть идеи, где я ошибаюсь ...

Еще раз спасибо, Димитр, за ответ ... но проблема все та же ... как я уже сказал, я не хочупередать URL в глобальный параметр .. Я хочу, чтобы это было dynamic ... чтобы ответить на ваши вопросы .. Я не знаю логики, стоящей за этим ... Я думаю, это из-за этого пространства имен, что я использовал .... PageUrl получает URL текущей страницы .... но когда яя пытаюсь

xsl: copy-of select = "$ DetailPageLink" /> или

xsl: value-of select = "$ DetailPageLink" /> или

xsl:value-of select = "substring-after ($ DetailPageLink, '=')" /> ...

Он не отображает какой-либо вывод ... но что интересно, он показывает URL страницы, когда я использую

a href = "{$ DetailPageLink}"> Jack / a>

Так что это означает, что PageUrl получает значение .... в противном случае тег не должен показывать какой-либо вывод ...

Если вам известен какой-либо другой способ получения URL текущей страницы, пожалуйста, дайте мне знать ...

Ответы [ 4 ]

1 голос
/ 26 марта 2013

Проблема здесь в том, что параметр:

xsl:param name="PageUrl"

на самом деле не работает на веб-странице. Даже если вы добавили в строку ParameterBinding (как предложено выше). выглядит как для работы в SP Designer, но при просмотре через браузер параметр PageUrl возвращает пустое или нулевое значение. Правильный параметр, который нужно использовать для возврата URL текущей страницы, это ServerVariable. Поэтому настройте привязку ParemeterBinding следующим образом (вам нужно добавить свои собственные угловые скобки, так как веб-сайту это не понравится, если я их наберу):

ParameterBinding Name="PageAddr" Location="ServerVariable(URL)" DefaultValue=""/

PageAddr - это просто случайное имя, которое я назначаю параметру, которое не следует путать с именем PageUrl. Затем вызовите параметр в таблице стилей, например:

xsl:param name="PageAddr" /

Теперь вы можете вызывать параметр в любом месте вашего XSLT-кода, используя $ PageAddr.

Имейте в виду, что этот параметр не работает в SP Designer, но будет работать в браузере.

[Кто-нибудь знает, почему Microsoft посчитала хорошей идеей работать один параметр в SPD, а другой - в браузере?]

1 голос
/ 11 сентября 2011

1) Я добавил пространство имен в xslt xmlns: ddwrt = "http://schemas.microsoft.com/WebParts/v2/DataView/runtime"

В этом нет необходимости.

2) Добавлен параметр

xsl: param name = ”PageUrl” />

3) Добавил это значение в переменную

<xsl:variable name=”DetailPageLink” select=”$PageUrl” />

4) Теперь, когда я пытаюсьчтобы использовать это в подстроке-после, его значение не отображается ...?

<xsl:value-of select="substring-after($DetailPageLink,'=')" />

5) Я также попытался

<xsl:value-of select="$DetailPageLink" />, но это не такдавая любое значение ..?

Любая идея, где я иду не так ...

Приведенные выше факты ясно показывают, что глобальный параметр $PageUrl либо не инициализирован, либо в любом случаеего строковое значение - пустая строка.

Решение :

Вам необходимо установить глобальный параметр $PageUrl с соответствующим значением строки до инициации преобразования. Вы также можете присвоить ему значение по умолчанию в атрибуте select глобального xsl:param, и если выбрано значение по умолчанию, это доказывает, что параметр не былинициализируется преобразованием XSLT /

. Ниже приведен правильный код XSLT , который использует либо значение по умолчанию $PageUrl, либо значение, предоставленное для этого глобального параметра ввремя начала преобразования:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>

 <xsl:param name="pPageUrl" select=
 "'www.stackoverflow.com/questions.aspx?display=18&amp;somethingElse=xyz'"/>

 <xsl:template match="/t">
  <xsl:variable name="vQSPart" select=
  "concat('&amp;', substring-after($pPageUrl,'?'),'&amp;')"/>

  <xsl:value-of select=
    "substring-before
        (substring-after($vQSPart, '&amp;display='),
         '&amp;')
    "/>
 </xsl:template>
</xsl:stylesheet>

Когда это преобразование применяется к любому XML-документу (не используется), получается требуемый, правильный результат :

18

Когда я устанавливаю значение глобального параметра вне преобразования в: 'www.stackoverflow.com/questions.aspx?something=abcd&display=123&somethingElse=xyz', а затем снова выполняю преобразование, я снова получаюправильный результат:

123
0 голосов
/ 05 февраля 2014

Чтобы инициализировать глобальную переменную «PathUrl», вы должны:

1) Добавить следующую строку в ParameterBindings

<ParameterBinding Name="PageUrl" Location="ServerVariable(QUERY_STRING)" DefaultValue=""/>

2) Добавить следующую строку в таблицу стилей xsl: послеParameterBindings

<xsl:param name="PageUrl"></xsl:param>

3) теперь вы можете использовать следующую строку, чтобы показать параметры URL

<xsl:value-of select="$PageUrl"/>

для других переменных сервера, которые вы можете посетить http://joshmccarty.com/2012/06/using-asp-net-servervariables-in-a-sharepoint-data-view-web-part/

С уважением:)

0 голосов
/ 26 сентября 2012

Я думаю, что самый простой способ отображения информации QueryString - это привязка ParameterBinding:

В привязку параметров добавьте:

<ParameterBinding Name="subsiteLink" Location="ServerVariable(PATH_INFO)" DefaultValue=""/>

В XSL-таблицу стилей DataView добавьте:

<xsl:param name="subsiteLink"></xsl:param>
path_info: <xsl:value-of select="$subsiteLink"/><br/>

Это упрощенный способ отображения данных.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...