2009-04-24 28 views
10

Tôi có mẫu dữ liệu dt1 trong sitecore có trường "tiêu đề" trong phần "dữ liệu". Tôi cũng có mẫu dữ liệu dt2 có trường "tiêu đề" trong phần "cổng" Cuối cùng tôi có mẫu dữ liệu dt3 sử dụng cả dt1 và dt2 làm mẫu cơ sở.Sitecore: Cách truy cập cùng tên trường trong các phần khác nhau

Làm cách nào để, trong xslt, tìm nội dung của cổng/tiêu đề?

Trong mã của tôi, khi tôi viết < sc: text field = "header"/>, tôi lấy nội dung của dữ liệu/tiêu đề (vì nút này đến trước). Tôi biết cách thực hiện điều này trong .net, nhưng tôi cần sử dụng xslt.

/callprat

+0

Khi được hỏi làm thế nào để soạn một biểu thức XPath đặc biệt để chọn các nút cụ thể trong một tài liệu XML ta phải cung cấp các tài liệu XML riêng của mình. Vui lòng cung cấp tài liệu XML mà bạn muốn chọn nút. Ngoài ra, hãy mô tả chính xác những nút nào bạn cần chọn. –

+1

Cảm ơn, nhưng đó là một trong những vấn đề, tôi không biết xml trông như thế nào. Tôi nhận thấy rằng phần mã của câu hỏi của tôi không hiển thị, tôi đã chỉnh sửa câu hỏi đó và bây giờ bạn có thể thấy tôi đang sử dụng vesion riêng của sitecore về xslt. Nếu ai đó biết cách xem sitecore-xml, điều này cũng có thể hữu ích. – Callprat

Trả lời

5

Bạn không thể.

Và thành thực mà nói, tôi cũng không biết cách nào để hỗ trợ nó từ .NET.

này, thẳng ra khỏi Data Definition Reference, phần 2.1.1

2.1.1 Dữ liệu Mẫu Fields

Một dữ liệu trường mẫu xác định điều khiển người dùng giao diện và các tài sản khác ảnh hưởng như thế nào trường hoạt động trong Trình chỉnh sửa nội dung và Trình chỉnh sửa trang. Để biết thêm thông tin về các trường, xem Chương 4, Trường Mẫu.

Lưu ý Khi xác định tên trường, đảm bảo rằng chúng là duy nhất ngay cả giữa các phần trường . Cả hai XSLT và .NET chỉ sử dụng tên trường mã một mình, không có tham chiếu đến các phần, , để trích xuất nội dung từ các trường.

+3

Bạn có thể làm điều đó với API. Bạn chỉ cần tìm ID trường, bằng cách tìm kiếm nó trong phần Thông tin mục. Sau đó, bạn có thể sử dụng để lấy giá trị trường. – misteraidan

5

Bạn có thể tham khảo các lĩnh vực theo ID:

C#:

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

hoặc

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

tôi đã không cố gắng này, nhưng tôi nghĩ rằng nó cũng sẽ hoạt động trong XSLT:

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

9

Tôi tìm thấy cách thức này trong .Net trên dự án tôi đang làm việc. Một trong các mẫu mà khách hàng đã thiết lập có "Nhóm" có các phần trường khác nhau, nhưng các trường bên trong giống nhau giữa các nhóm. Tôi đã sử dụng LINQ để nhóm các trường theo tên phần, sau đó xử lý từng nhóm trường.

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; 
Các vấn đề liên quan