我有一个名为“Demo”的数据类型我也有一个名为“Test”的页/节点。 如果我不在任何类型的背景?Umbraco,通过名称和数据类型获取节点
我一直在使用新的节点(-1)尝试和选择了我的方式,但我真的不能图这一个..
提前感谢!
我有一个名为“Demo”的数据类型我也有一个名为“Test”的页/节点。 如果我不在任何类型的背景?Umbraco,通过名称和数据类型获取节点
我一直在使用新的节点(-1)尝试和选择了我的方式,但我真的不能图这一个..
提前感谢!
最简单的方法很可能是使用以下uQuery扩展名之一:
下面是几个例子:
GetNodesByName(串) :
umbraco.NodeFactory.Node node = uQuery.GetNodesByName("Page Name")
.Where(n => n.NodeTypeAlias == "NodeTypeAlias").FirstOrDefault();
if (node != null)
{
//...
}
GetNodesByType(字符串或INT):
umbraco.NodeFactory.Node node = uQuery.GetNodesByType("NodeTypeAlias")
.Where(n => n.Name == "Page Name").FirstOrDefault();
if (node != null)
{
//...
}
由于Document是发布的节点,并且没有方法GetDocumentByName()您如何获取仅发布的节点或检查节点是否已发布? – VinnyG 2013-11-12 21:33:15
好吧,它似乎只返回发布的那些,如果我想通过名称取消发布的节点,我该怎么办? – VinnyG 2013-11-12 22:53:47
'Node'允许访问XML缓存中已发布的节点或节点,而'Document'则允许访问所有节点,包括未发布节点或数据库中的所有节点。由于查询数据库代价昂贵,我不建议通过名称获取节点,但如果您真的需要,可以获取root的所有后代,然后获得与特定名称匹配的第一个后代。 – 2013-11-12 23:25:56
用一把umbraco 6+我认为这将是最好...
public static IPublishedContent GetNodeByAlias(string alias)
{
var umbracoHelper = new UmbracoHelper(UmbracoContext.Current);
var contentNode = umbracoHelper.TypedContentSingleAtXPath(String.Format("//{0}", alias));
return contentNode;
}
这只是需要一个文档类型别名,使用当前的Umbraco上下文找到您的节点为IPublishedContent。 UmbracoHelper也为你提供了很多选择。
您使用的是哪种版本的Umbraco? – 2013-04-10 17:35:10