2017-01-16 65 views
2

我已经看到了一把umbraco代码,开发人员获得参考内容页,像这样:获取对Umbraco中的内容节点的引用?

var content = UmbracoContext.PublishedContentRequest.IsInternalRedirectPublishedContent 
       ? UmbracoContext.PublishedContentRequest.InitialPublishedContent 
       : UmbracoContext.PublishedContentRequest.PublishedContent; 

但是,他们为何这样做呢?

为什么不使用@ Model.Content()

是什么(他们做什么):

  • IsInternalRedirectPublishedContent?

  • InitialPublishedContent?

  • PublishedContent?

+0

重定向内容?..是不好? – user1032019

回答

3

在Umbraco中有一堆保留属性,你可以把它放在文档上以获得一些“隐藏”功能。其中之一是umbracoInternalRedirectId,它允许您执行内部重定向并呈现另一个节点,而不是请求的节点。

您可以阅读更多关于其他保留属性here的其他信息。

如果您使用内部重定向,您的请求将在内部被重定向到另一个节点ID,然后所有内容都将呈现,就像您最初请求其他节点一样(但您不会看到浏览器重定向,它不会也可以反映在URL中)。

是什么(他们做什么):

IsInternalRedirectPublishedContent?

如果您正在重定向到的内容当前已发布,则这将成立。如果内容未发布,则为False。

InitialPublishedContent?

这将是您最初碰到的内容项目(重定向发生之前)。

已发布内容?

这将是您重定向到的内容项目(这将与您在上面提到的当前内容项目相同)。

但是他们为什么这么做?

上面所做的是在重定向发生任何内部重定向之前总是尝试引用初始内容 - 如果没有发生内部重定向,只获取当前内容项。

但是,考虑到如果IsInternalRedirectPublishedContent返回false,InitialPublishedContent将与PublishedContent相同,但这似乎并没有什么意义。

你会被简单地做得到与上述相同的结果:

var content = UmbracoContext.PublishedContentRequest.InitialPublishedContent; 

这可能不过是这并没有一直如此,而这一段代码是为了解决一个bug在旧的版本的Umbraco。

所以我会说,除非你在你的网站有一个非常奇怪的重定向设置,应该没有理由不只是使用这段代码,而不是你发布的。

要完全回答你的问题:

在上面的代码,在你的模板使用content,将在重定向在配置页面的引用。使用Model.Content将引用您内部重定向到的节点。

相关问题