Я пытаюсь перебрать шаблоны sitecore вместо элементов - PullRequest
0 голосов
/ 24 мая 2011

Хорошо, так что это мой xslt для циклического перемещения по элементам домашнего элемента, но я хотел бы иметь возможность циклически проходить по шаблону ... Причина в том, что мой xslt может быть более конкретным, а не показыватьвсе под домашний предмет

<xsl:template match="*" mode="main">
  <div id="aside">
    <ul id="nav">
      <xsl:for-each select="$home/descendant-or-self::item[position() &lt;= 6]">

        <li>
          <sc:link>
            <sc:text field="Title"></sc:text>
          </sc:link>
        </li>
      </xsl:for-each>
    </ul>

  <div class="advertisement">
    <sc:image field="Image"></sc:image>
  </div>
  </div>
</xsl:template>

1 Ответ

3 голосов
/ 24 мая 2011

Из вашего xslt кажется, что вы говорите о навигации. Вместо циклического обхода различных шаблонов я бы создал специальный шаблон навигации, который имеет только одно поле с именем ShowInNavigation. Тогда все ваши другие шаблоны унаследуют этот, и навигация xslt станет проще

<xsl:template match="*" mode="main">
  <div id="aside">
    <ul id="nav">
      <xsl:for-each select="$home/descendant-or-self::item[sc:fld('ShowInNavigation') = '1']">

        <li>
          <sc:link>
            <sc:text field="Title"></sc:text>
          </sc:link>
        </li>
      </xsl:for-each>
    </ul>

  <div class="advertisement">
    <sc:image field="Image"></sc:image>
  </div>
  </div>
</xsl:template>

Также не используйте Потомок или Сам :: Элемент в навигации, потому что с ростом сайта навигация станет вашим узким местом. Лучше использовать $ home / item [sc: fld ('ShowInNavigation') = '1'] и затем жестко закодировать домашний узел выше. Таким образом, xslt станет:

<xsl:template match="*" mode="main">
  <div id="aside">
    <ul id="nav">
        <li>
          <sc:link select="$home">
            <sc:text field="Title"></sc:text>
          </sc:link>
        </li>
      <xsl:for-each select="$home/item[sc:fld('ShowInNavigation') = '1']">

        <li>
          <sc:link>
            <sc:text field="Title"></sc:text>
          </sc:link>
        </li>
      </xsl:for-each>
    </ul>

  <div class="advertisement">
    <sc:image field="Image"></sc:image>
  </div>
  </div>
</xsl:template>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...