我正在尝试 for 循环访问 sitecore 模板而不是项目

发布于 2024-11-09 18:11:44 字数 625 浏览 0 评论 0原文

好的,这是我的 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>

Ok so this is my xslt for looping through the items of the home item, but I would like to be able to loop through the template... The reason for this is so that my xslt can be more specific instead of showing everything under the home item

<xsl:template match="*" mode="main">
  <div id="aside">
    <ul id="nav">
      <xsl:for-each select="$home/descendant-or-self::item[position() <= 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>

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

青丝拂面 2024-11-16 18:11:44

从您的 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>

另外,不要在导航中使用 descendant-or-self::item 因为随着网站的增长,导航将成为您的瓶颈。
最好使用 $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>

From your xslt it seems you are talking about the navigation. Instead of looping through different templates I would create a specific Navigation template that has only one field called ShowInNavigation.
Then all your other templates will inherit this one and the navigation xslt will become simpler

<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>

Also don't use descendant-or-self::item in the navigation because as the site grows the navigation will become your bottleneck.
Better use $home/item[sc:fld('ShowInNavigation') = '1'] and then hardcode the home node above. So the xslt will become:

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文