Umbraco 7.5.1 umbracoNaviHide

Umbraco 7.5.1 umbracoNaviHide

为了能够过滤掉不应使用 .Where("Visible") 呈现的项目,我需要一个名为 umbracoNaviHide 的 属性 returns true 或 false。

在早期版本中,这是添加到通用选项卡中的。但是现在您不能再附加到该选项卡。

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

这是我的foreach:

 @foreach (var Area in Model.Content.Children.Where("Visible"))
 {

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

Related Changes Summary - 7.4 beta - Option toCannot add properties to the "Generic properties" tab

说明 - 在 7.4 测试版中无法再添加 "Generic properties" 选项卡的属性。我知道这已经完成了 因为属性在该选项卡上可能有点隐藏,通常是 在单独的选项卡上更好。但有些情况下 该选项卡上的属性更好。

您可以将 属性 作为 true/false 数据类型添加到任何选项卡。然而,重要的是要注意 umbracoNaviHide 没有做任何特别的事情它只是一个神奇的字符串,当实现为 true/false 数据类型时,它适用于

.Where("Visible"). 

我个人不再使用它了。如果我需要使项目可见或不可见,那么我会更具体地命名 属性。例如,在实现您希望某些节点可见但其他节点不可见的菜单时,它通常很有用。我通常有一个菜单选项卡,其中一个属性是名为 Show in menu 的 true/false 类型,别名为 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
}

希望对您有所帮助

J

您可以创建一个用于显示或隐藏菜单项的复选框的节点可见性组合。并且您可以将此继承到您不想显示的文档类型。

然后你可以做

_homeNode.Children.Where(x => !x.GetPropertyValue<bool>("hideInNavigation"));

希望对您有所帮助!