Подробная информация о текущем члене Umbraco, разделенный запятой, список нескольких текстовых строк

Я создаю макрос, который получает свойство от текущего члена. Свойство использует тип данных «несколько текстовых строк», и каждая текстовая строка содержит идентификатор носителя, номер версии, дату и время добавления.

<xsl:output method="xml" omit-xml-declaration="yes"/>

<xsl:param name="currentPage"/>

<xsl:template match="/">

        <xsl:if test="count(umbraco.library:GetCurrentMember()/assetDownloads/values/value) > 0">
                <ul>
                        <xsl:for-each select="umbraco.library:GetCurrentMember()/assetDownloads/values/value">
                                <li>
                                        <xsl:if test="./preview != ''">
                                                <img>
                                                        <xsl:attribute name="src">
                                                                <xsl:value-of select="./preview" />
                                                        </xsl:attribute>
                                                </img>
                                        </xsl:if>
                                        <p><xsl:value-of select="current()"/></p>       
                                </li>
                        </xsl:for-each>
                </ul>
        </xsl:if>

</xsl:template>

Это приводит к следующему:

  • 1475,1,28-дек-12 01:26:45

  • 1475,1,28-дек-12 01:27:03

Первые значения — это идентификатор типа носителя, второе значение — номер его версии, а третье значение — дата и время загрузки.

Как я могу отделить строку, чтобы отображать детали из типа носителя? Я хотел бы отобразить изображение предварительного просмотра из типа мультимедиа и nodeName типа мультимедиа.

Может ли кто-нибудь помочь мне с этим?

Ура, СП

Вот как отобразить первое значение в качестве предварительного изображения и имени узла:

<!-- First value as preview image and nodeName -->
<xsl:if test="position() = 1">
    <img>
        <xsl:attribute name="src">
            <xsl:value-of select="umbraco.library:GetMedia(., 0)/preview" />
        </xsl:attribute>
    </img>
    <p><xsl:value-of select="umbraco.library:GetMedia(., 0)/@nodeName" /></p>
</xsl:if>

person JV10    schedule 07.01.2013    source источник


Ответы (1)


Попробуйте использовать функцию разделения Umbraco, разделенную через , (Comma), как показано ниже.

<xsl:variable name="contentSplit" select="umbraco.library:Split(current(), ',')" />

Код рефакторинга:

<xsl:if test="count(umbraco.library:GetCurrentMember()/assetDownloads/values/value) > 0">
  <ul>
    <xsl:for-each select="umbraco.library:GetCurrentMember()/assetDownloads/values/value">
      <li>
        <xsl:if test="./preview != ''">
          <img>
            <xsl:attribute name="src">
              <xsl:value-of select="./preview" />
            </xsl:attribute>
          </img>
        </xsl:if>
        <p>

          <!-- Split values via , comma using below function -->
          <xsl:variable name="contentSplit" select="umbraco.library:Split(current(), ',')" />

          <xsl:for-each select="$contentSplit/value">

            <!-- First value as media type id -->
            <xsl:if test="position() = 1">
              Media Type Id: <xsl:value-of select="." />
            </xsl:if>

            <!-- Second value as version number -->
            <xsl:if test="position() = 2">
              Version: <xsl:value-of select="." />
            </xsl:if>

            <!-- Third value as date and time of download -->
            <xsl:if test="position() = 3">
              Date Time: <xsl:value-of select="." />
            </xsl:if>

          </xsl:for-each>

        </p>       
      </li>
    </xsl:for-each>
  </ul>
</xsl:if>

Дайте мне знать, если вам нужно больше объяснений, спасибо

person Ankur Ghelani    schedule 07.01.2013
comment
Спасибо @ankur, используя ваш ответ, я внес изменения в свой исходный пост с кодом для отображения изображения и имени узла. Ваше здоровье! - person JV10; 08.01.2013