Umbraco 7.5.1 umbracoNaviHide

时间:2017-03-29 15:23:43

标签: umbraco umbraco7

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

在早期版本中,这已添加到“通用​​”选项卡中。但是现在你不能再附加到那个标签了。

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

这是我的预言:

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

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

  
    

相关更改摘要 - 7.4 beta - 选项无法向“通用属性”选项卡添加属性

  
     

描述 - 在7.4测试版中,不再可以添加   属性到“通用属性”选项卡。我知道这已经完成了   因为属性可以隐藏在该选项卡上,通常是   在单独的选项卡上更好。但有些情况下   该标签上的属性更好。

2 个答案:

答案 0 :(得分:4)

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

一起使用
.Where("Visible"). 

我个人不再使用它了。如果我需要让物品可见或不可见,那么我会更具体地命名物业。例如,在实现您希望某些节点可见而不是其他节点的菜单时,它通常很有用。我通常有一个菜单选项卡,其中一个属性是名为在菜单中显示的真/假类型,别名为showInMenu

在代码中它可能类似于下面(我使用TypedContentAtXPath来获取特定doc类型的父节点。当然有各种方法可以做到这一点)

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
}

希望有所帮助

Ĵ

答案 1 :(得分:1)

您可以使用复选框为节点可见性创建合成,以显示或隐藏菜单项。您可以将此继承到您不想显示的文档类型。

然后你可以做

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

Node visibility

希望这有帮助!