2017-01-16 36 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將引用您內部重定向到的節點。

相關問題