2013-08-01 20 views
1

我使用的是Umbraco 6.0.1我創建了兩個頁面,第一個頁面元素是頁面頁眉,正文文本等。 我創建了另一個頁面,我希望頁面第一頁中使用的元素,它們之間沒有任何父子關係。 那麼是否有可能將另一頁的頁面元素放入Umbraco的頁面?Umbraco - 通過使用pageId獲取頁面元素

回答

2

它可能不會出現,但Umbraco中始終存在親子關係。

爲了說明,您在內容結構中創建的每個節點都創建在ID爲-1的主節點下。所以,所有的節點都是這個節點的子節點。即使你的兩個節點都在兩個看似獨立的內容分支中,它們總是與相關。

如果兩個節點都是根節點,從CSHTML視圖中可以訪問所有的根節點像這樣:

@Umbraco.TypedContentAtRoot() 

然後,您可以通過他們穿越這樣的:

@{ 
    var rootNodes = Umbraco.TypedContentAtRoot(); 

    var settingsNode = rootNodes.First(x => x.DocumentTypeAlias == "Settings"); 
    var homeNode = rootNodes.First(x => x.DocumentTypeAlias == "Homepage"); 
} 

然後,您可以訪問這些節點上的屬性並將它們顯示在您的視圖中。

最後,大部分信息可以在http://our.umbraco.org/documentation/Reference/找到,它是熟悉它們如何結合在一起的好地方。

+0

感謝快速回復,但我不能管理這些關係,讓我找到了一個解決方案通過PAGEID獲取頁面 umbraco.cms.businesslogic.web.Document currentDoc =新umbraco.cms.businesslogic.web.Document (的PageId); umbraco.cms.businesslogic.property.Property prop = currentDoc.getProperty(「MY_PROPERTY」); –

1

是的,我們可以得到沒有關係的頁面,如上面提到的評論 也是有針對性的頁面屬性。

var currentDoc = new umbraco.cms.businesslogic.web.Document(PageId); 

umbraco.cms.businesslogic.property.Property prop = currentDoc.getProperty("MY_PROPERTY"); 
+1

這種方法存在兩個問題:1)如果您知道頁面的ID並且該頁面是永久性的,則這只是確定的。基於CMS的網站存在的問題是頁面被刪除並被替換。 2)對數據庫進行多次調用 - 一次檢索文檔,至少一次檢索文檔。更好的解決方案是使用查詢XML緩存的方法。查看我的答案和/或Umbraco文檔。 – Digbyswift

+0

是的,你提出的東西是正確的,但如果我們能夠管理頁面名稱,那麼我們也有通過使用頁面名稱/// uQuery.GetNodesByName(pageName)獲取pageId的解決方案///,基本上我們正在開發多語言網站所以每種語言都有單獨的根節點。而在數據庫調用的情況下,是的,您的解決方案將是最好的......謝謝 –