Umbraco 7.5.1 umbracoNaviHide

Cod*_*ker 1 umbraco umbraco7

为了能够过滤掉不应该使用.Where(“ Visible”)渲染的项目,我需要一个名为umbracoNaviHide的属性,该属性返回true或false。

在早期版本中,它已添加到“通用​​”选项卡中。但是,现在您不能再追加到该选项卡了。

我现在如何完成隐藏页面?

这是我的佛经:

 @foreach (var Area in Model.Content.Children.Where("Visible"))
 {
Run Code Online (Sandbox Code Playgroud)

这是关于它的声明。但我找不到任何解决方法。

相关更改摘要-7.4 beta-无法将属性添加到“常规属性”选项卡的选项

说明-在7.4 beta中,无法再将属性添加到“常规属性”标签。我知道这样做是因为属性可以在该选项卡上隐藏一些,并且通常在单独的选项卡上更好。但是在某些情况下,该选项卡上的属性更好。

win*_*yip 5

您可以将该属性作为true / false数据类型添加到任何选项卡。但是,需要特别注意的是,umbracoNaviHide并没有做任何特殊的事情,它只是一个魔术字符串,当实现为true / false数据类型时,它可以与

.Where("Visible"). 
Run Code Online (Sandbox Code Playgroud)

我个人不再使用它。如果需要使项目可见或不可见,则可以更具体地命名属性。例如,当您希望某些节点可见而其他节点不可见时,在实现菜单时通常很有用。我通常有一个“菜单”选项卡,其中一个属性是一个真/假类型,称为“在菜单中显示”,别名为showInMenu

在代码中可能类似于以下内容(我使用TypedContentAtXPath来获取特定文档类型的父节点。当然,可以通过多种方式来实现)

var homeNode = Umbraco.TypedContentAtXPath("//MyHomePageDocType").First();
var menuItems = homeNode.Children.Where(item=>item.GetPropertyValue<bool>("showInMenu"));

foreach(var item in menuItems)
{
    // Do your menu stuff here
}
Run Code Online (Sandbox Code Playgroud)

希望能有所帮助

Ĵ