Umbraco Cogworks灵活导航 - 如何排除文档类型

时间:2012-10-16 23:59:04

标签: xslt umbraco

有人可以告诉我如何从Cogworks Flexible Navigation中排除文档类型吗?

如何允许从导航中排除数组或文档类型列表?

注意:我不想使用" umbracoNaviHide"因为我想要排除文档类型,我不想在我的文档类型中添加一个true / false复选框,然后手动检查它们。

Cogworks - 灵活导航:http://our.umbraco.org/projects/website-utilities/cogworks-flexible-navigation

相关文章:Umbraco xslt navigation query

2 个答案:

答案 0 :(得分:1)

这取决于您使用的是Razor版本还是XSLT版本。对于XSLT,您可以在XSLT文件中的nodeIterator模板上的“match”属性中添加*[name()!='MyDoctypeAlias' or name()!='MyOtherDoctypeAlias']

对于Razor版本,在nodeIterator帮助器中,我将定义如下:

List<string> listOfDoctypesToExclude = new List<string>() { "MyDoctypeAlias", "MyOtherDoctypeAlias" };
if (!listOfDoctypesToExclude.Contains(currentNode.NodeTypeAlias) {
  // continue with render
}

答案 1 :(得分:0)

我发现这可以作为捷径,但我仍然喜欢创建一个数组或排除文档类型列表。

首先隐藏祖先选择状态:

<!--Is the node a branch? i.e. are there children and is it in the colletion of ancestor nodes -->
    <xsl:variable name="isBranch">
      <xsl:choose>
        <xsl:when test="$currentPage/ancestor-or-self::*[@isDoc][@id = $currentNodeID]/child::*[@isDoc][name() != 'MyDoctypeAlias']">1</xsl:when>
      </xsl:choose>
    </xsl:variable>

然后隐藏子节点(hasChildren):

<xsl:variable name="hasChildren">
      <xsl:choose>
        <xsl:when test="./*[@isDoc][name() != 'MyDoctypeAlias']">1</xsl:when>
      </xsl:choose>
    </xsl:variable>