2009-04-24 59 views
10

我在sitecore中的數據模板dt1在「數據」部分有字段「標題」。 我還有數據模板dt2,在「門戶」部分有字段「標題」 最後,我有數據模板dt3,它同時使用dt1和dt2作爲基本模板。Sitecore:如何在不同部分訪問相同的字段名稱

我該如何在xslt中找到portal/header的內容?我寫了< sc:text field =「header」/ >,我得到了data/header的內容(因爲這個節點先來了)。 我知道如何在.net中做到這一點,但我需要使用xslt。

/callprat

+0

當詢問如何構成一個特定的XPath表達式在XML文檔中選擇特定的節點的一個必須提供XML文檔本身。請提供您想從中選擇節點的XML文檔。另外,請準確地描述您需要選擇哪些節點。 – 2009-04-24 13:27:12

+1

謝謝,但那是問題之一,我不知道xml是什麼樣子。 我注意到我的問題的代碼部分沒有顯示,我已經編輯了,現在你可以看到我正在使用一個sitecore自己的xslt。 如果有人知道一種方法來查看sitecore-xml,這可能也會有所幫助。 – Callprat 2009-04-24 13:56:37

回答

5

你不能。

坦率地說,我不知道任何從.NET支持的方式。

此,直出Data Definition Reference的,第2.1.1節

2.1.1數據模板字段

數據模板字段定義了用戶 接口控制和其它性質 影響如何字段在內容編輯器和頁面編輯器中表現爲 。 有關字段的更多信息,請參閱 第4章,模板字段。

注意定義字段名稱時,請確保 即使在 字段部分之間它們也是唯一的。代碼僅使用字段名稱,而不使用 對部分的引用,以便從字段中提取 內容。

5

您可以通過其ID引用字段:

C#:

string value = item["{00000000-0000-0000-000000000000}"]

Field field = item.Fields["{00000000-0000-0000-000000000000}"]

我沒有試過,但我認爲這也將在XSLT中工作:

<sc:text field="{00000000-0000-0000-000000000000}" />

9

我在一個正在處理的項目中發現了一個解決.net問題的方法。客戶端建立的模板之一是具有不同字段的「桶」,但桶之間的字段是相同的。我使用LINQ按部分名稱對字段進行分組,然後處理每個字段的分組。

var sections = currentItem.Fields.GroupBy(field => field.Section); 
foreach (var section in sections) 
{ 
    if (section.Key.StartsWith("Bucket")) 
    { 
     buckets.Add(new Bucket(section)); //I made a bucket item, 
              //and passed each IGrouping<Field> to it 
    } 
} 
8
item.Fields.Where(field => field.Section.ToUpper() == "META DATA" && 
          field.DisplayName.ToUpper() == "TITLE").First().Value; 
相關問題