XSL сортировка с помощью Sitecore - PullRequest
0 голосов
/ 01 марта 2012

Я не очень знаком с xsl, так что я вроде как наткнулся на это.

Мой xsl-файл создает меню.Я пытаюсь отсортировать пункты меню по значению в поле заголовка меню в Sitecore.Когда я запускаю код, он не сортируется.Он просто записывает каждый пункт меню четыре раза.

Может кто-нибудь пролить свет на то, что мне не хватает?

<xsl:template name="show-title">
    <xsl:param name="root" />
    <xsl:for-each select="$sc_currentitem/item">
        <xsl:sort select="sc:fld('menu title',.)" order="ascending"/>
        <xsl:choose>
            <xsl:when test="sc:fld('menu title',$root)!=''">
                <sc:text field="menu title" select="$root" />
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="$root/@name" />
            </xsl:otherwise>
        </xsl:choose>
    </xsl:for-each>
</xsl:template>

РЕДАКТИРОВАТЬ: Ниже приведены данные, которые генерирует код выше Пример вывода:

  • 03/05/201203 / 05/201203/05/201203/05/2012
  • 03/01/201203/01/201203/01/201203/01/2012
  • 03/08/201203/08/201203/08/201203/08/2012
  • 03/02/201203/02/201203/02/201203/02/2012
  • 03/07/201203/07/201203/07/201203/07/2012

Я пытаюсь получить следующее:

  • 03 /01/2012
  • 03/02/2012
  • 03/05/2012
  • 03/07/2012
  • 03/08/2012

Спасибо!

Ответы [ 2 ]

0 голосов
/ 07 марта 2012

Похоже, вы пытаетесь прочитать поле заголовка меню с неправильного узла. Вы должны читать его из узла контекста -> . <- </p>

Попробуйте это

<xsl:template name="show-title">
    <xsl:param name="root" />
    <xsl:for-each select="$sc_currentitem/item">
        <xsl:sort select="sc:fld('menu title',.)" order="ascending"/>
        <xsl:choose>
            <xsl:when test="sc:fld('menu title',$root)!=''">
                <sc:text field="menu title" select="." />
            </xsl:when>
            <xsl:otherwise>
                <xsl:value-of select="./@name" />
            </xsl:otherwise>
        </xsl:choose>
    </xsl:for-each>
</xsl:template>
0 голосов
/ 02 марта 2012

Это всего лишь предположение, поскольку вы не предоставляете достаточно информации, чтобы кто-то мог сделать что-то большее, чем догадка, но ....

В рамках каждого для каждого вы имеете в виду $ root, например <xsl:value-of select="$root/@name" />

Я предполагаю, что параметр $ root содержит какой-то список, и вам следует выбирать только часть этого списка на основе некоторого значения из текущего контекста for-each *

...