2009-01-15 24 views
9

Tôi có loại câu hỏi giả định (ít nhất là bây giờ :))Sharepoint: Điều gì sẽ xảy ra với danh sách dựa trên loại nội dung khi loại nội dung được cập nhật?

Giả sử tôi tạo danh sách dựa trên một số loại nội dung tùy chỉnh. Tôi thêm một số 1000 mặt hàng vào danh sách đó (trong sản xuất). Sau đó, khách hàng đến và anh ấy nói rằng anh ấy cần phải sửa đổi loại nội dung tùy chỉnh đó.

Điều gì xảy ra với danh sách nếu tôi sửa đổi loại nội dung tùy chỉnh? Nó sẽ được cập nhật tự động (tôi nghi ngờ)? Và những gì về các mục danh sách đã được tạo ra?

Có ai trong số các bạn có kinh nghiệm về điều này không?

Trả lời

16

Vì vậy, một vài vấn đề liên quan đến các loại nội dung:

Trước hết, các loại nội dung có hai hương vị: Các loại nội dung trang web và các loại nội dung danh sách. Các loại nội dung trang web là "mẫu" nằm trong thư viện. Khi một kiểu nội dung trang được sử dụng trong một danh sách, kiểu nội dung được khởi tạo như một kiểu nội dung danh sách trên danh sách đã cho.

Thứ hai, các loại nội dung của bạn có thể được tạo và sửa đổi theo nhiều cách, điều này sẽ quyết định xem ba chế độ dữ liệu của bạn có trong cơ sở dữ liệu nào.

Nếu bạn đã tạo loại nội dung bằng GUI hoặc thông qua mã tùy chỉnh bằng API, cả loại nội dung trang web và loại nội dung danh sách của bạn đều ở trạng thái "chỉ cơ sở dữ liệu" trong cơ sở dữ liệu. Điều đó có nghĩa là nó đang tìm trong cơ sở dữ liệu cho các định nghĩa của kiểu nội dung.

Nếu bạn đã tạo ra kiểu nội dung như một tính năng trong CAML, trang web loại nội dung của bạn mờ đi (hoặc bỏ tùy chỉnh như chúng ta có nghĩa vụ phải gọi nó trong v3) trong cơ sở dữ liệu. Điều đó cơ bản có nghĩa là cơ sở dữ liệu tìm kiếm tính năng XML trong 12-hive cho các cột trang web tạo nên kiểu nội dung. Vì vậy, điều đó có nghĩa là bạn có thể cập nhật tính năng này và bạn sẽ có các cột trang web mới có sẵn trong loại nội dung cập nhật, phải không?

Thật không may là: hãy nhớ rằng chúng tôi cũng có các loại nội dung trong danh sách? Các bummer ở ​​đây là, rằng các loại nội dung danh sách được instantiated bằng cách sử dụng mã, do đó, họ đang ở trong trạng thái "cơ sở dữ liệu chỉ". Điều đó có nghĩa là các thay đổi của bạn sẽ chỉ được nhìn thấy trong các loại nội dung trang web của bạn, nhưng không phải trong các danh sách hiện có bằng cách sử dụng loại nội dung đó!

Có một số cách để khắc phục sự cố này, giải pháp phụ thuộc vào nhu cầu của bạn và loại thay đổi bạn đang làm (xóa trường, thêm trường, thay đổi trường).

Ví dụ: bạn thường muốn giữ dữ liệu meta mục hiện tại của mình, mặc dù loại nội dung thay đổi theo thời gian. Nếu bạn đẩy các thay đổi trong loại nội dung danh sách qua mã, bạn sẽ mất dữ liệu được lưu trữ trong các trường đã thay đổi/đã xóa. Một giải pháp cho điều này sẽ là thêm một loại nội dung hoàn toàn mới dựa trên loại nội dung cũ nhưng với các trường đã thay đổi.Bạn sẽ thêm loại nội dung mới (thông qua mã hoặc sử dụng XML tính năng) và sử dụng trình thu thập tính năng hoặc tương tự để đẩy loại nội dung mới lên tất cả các danh sách đã sử dụng loại nội dung cũ và sau đó đánh dấu loại nội dung cũ là bị ẩn. Điều đó sẽ làm cho nó có thể giữ dữ liệu meta cũ nhưng không thể thêm các mục mới bằng cách sử dụng khác với dữ liệu meta mới.

Cách tiếp cận được đề cập trong câu trả lời khác cho câu hỏi này sẽ được ưu tiên nếu bạn có quyền truy cập trực tiếp vào môi trường sản xuất và nếu kế hoạch quản trị khách hàng của bạn cho phép. Như với các tạo phẩm khác trong SharePoint tuy nhiên, nó sẽ được khuyến khích để triển khai các kiểu nội dung một cách có cấu trúc. Việc thêm kiểu nội dung mới theo kiểu không có cấu trúc sẽ ảnh hưởng đến mức độ liên quan của tìm kiếm (thuộc tính được quản lý) và cũng có thể ảnh hưởng đến phân loại chung của trang web (cột trang web không được sử dụng lại, v.v.), vì vậy có thể thêm những thay đổi này trực tiếp vào trang web sản xuất, tôi sẽ không khuyên bạn nên nó!

Điều đó dẫn tôi đến phương pháp cuối cùng là phương pháp tôi sẽ khuyên bạn nên, ít nhất là cho các loại nội dung trong tương lai: Tạo các loại nội dung của bạn theo lập trình ngay từ đầu bằng cách sử dụng bộ thu tính năng! Bằng cách đó bạn luôn biết trạng thái thực sự của các loại nội dung của bạn (chỉ dành cho cơ sở dữ liệu) và bạn có thể có một cách tiếp cận có cấu trúc để điều chỉnh các thay đổi trong tương lai! Bạn có thể tìm một số cách để làm điều này bằng cách googling 'tạo' loại nội dung 'lập trình SharePoint'

Để hoàn thành: Tôi đã đề cập ba chế độ. Chế độ cuối cùng mà kiểu nội dung của bạn có thể nằm trong "UnGhosted". Điều này có nghĩa là loại nội dung của bạn đã được tạo bằng cách sử dụng tính năng XML, nhưng nó đã bị ngắt kết nối khỏi nguồn XML gốc trong số 12 hive.

Bạn tôi Søren Nielsen có một số điểm tốt về Loại nội dung trong Audit your Content Type Hierarchy. Bạn có thể tìm thấy một số vấn đề được mô tả ở trên trong một bài viết MSDN Updating Content Types MSDN. Gary Lapointe cũng có phần mở rộng STSADM giải quyết một số vấn đề với Loại Nội dung, xem Propagate Content Type Changes.

Xin lỗi vì sự thích nghi, nhưng chủ đề phức tạp và yêu cầu giải thích kỹ lưỡng để tránh bất kỳ quan niệm sai lầm nào.

+0

Nếu bạn đã tạo loại nội dung ban đầu trong một tính năng nhưng sau đó cần cập nhật chúng, bạn cũng sẽ đề xuất phương pháp tiếp cận tính năng? –

+0

Xin chào, câu trả lời của bạn rất hữu ích, ít nhất là đối với tôi :) Đôi khi rất khó tìm tài liệu là thế giới của Sharepoint. Tôi cũng tò mò về việc cập nhật các loại nội dung được tạo bởi tính năng :) Cảm ơn rất nhiều – drax

+0

Nếu bạn sử dụng mô hình đối tượng hoặc đẩy xuống bằng cách sử dụng GUI là một câu hỏi về thực tiễn triển khai. Kịch bản trong bộ thu đặc tính thực hiện lấy mẫu, nhưng cung cấp cho bạn a) sự tự do tốt hơn để xử lý các CT hiện tại như bạn muốn và b) một quá trình triển khai có sức mạnh có thể được kiểm tra trong preprod vv. –

3

Khi bạn cập nhật loại nội dung có hộp kiểm, bạn có thể nhấp để cập nhật các loại nội dung con. Bằng cách kiểm tra hộp đó, danh sách các loại nội dung sẽ được cập nhật.

Lưu ý rằng nếu bạn làm không hãy chọn hộp để cập nhật các loại nội dung con thì không có cách nào để buộc cập nhật sau này. Vì vậy, nếu bạn không cập nhật và sau đó muốn các loại nội dung con để có bản cập nhật, trước tiên bạn cần phải đảo ngược bản cập nhật và nhanh chóng.

.b

+1

bạn có thể cập nhật danh sách theo chương trình vào một số ngày sau đó, chỉ cần không thông qua giao diện người dùng. – Jason

+1

Có vẻ tốt với tôi, nhưng tôi quan tâm hơn đến cách tiếp cận có lập trình, vì chúng tôi không sử dụng giao diện người dùng nhiều để tạo kiểu nội dung – drax

Các vấn đề liên quan