2012-07-31 33 views
6

Tôi cố gắng để làm thực hiện một phân giải tùy chỉnh cho một thành phần như mô tả ở đây Chris: http://www.tridiondeveloper.com/the-story-of-sdl-tridion-2011-custom-resolver-and-the-allowwriteoperationsintemplates-attributeLàm thế nào để loại bỏ các mục từ xuất bản bằng cách sử dụng một Tridion Resolver?

Tôi muốn loại bỏ một số nhị phân (chủ yếu là của pdf) được sử dụng trong thành phần và ngăn cản họ xuất bản. Tôi có thể lấy danh sách các mục được sử dụng bằng cách sử dụng phương thức item.GetListUsedItems. Làm cách nào để xóa chúng?

sử dụng: tridion 2009

+0

Chúng tôi có thể làm bạn quan tâm đến cam kết đề xuất cụ thể cho [Area 51 Tridion] hay không (http://area51.stackexchange.com/proposals/38335/tridion?referrer=gPujQMxthNCNn9xqeeO2NA2). Đăng ký bằng cùng một tài khoản SO nếu bạn có thời gian. –

Trả lời

9

Tại Nhà xuất bản thời gian quá trình phân giải xác định mục cần được công bố, giống như khi bạn xuất bản một cơ cấu Tập đoàn, mặc định Resolver sẽ thêm tất cả trang trong cấu trúc Tập đoàn Xuất bản giao dịch.

Trình giải quyết chỉ xử lý các mục trong Giao dịch xuất bản có thể xuất bản trực tiếp và đó là Trang và Bản trình bày thành phần động. Vì vậy, một Resolver không xử lý các thành phần đa phương tiện được liên kết, chúng được xuất bản bởi mã mẫu thông qua việc gọi phương thức AddBinary().

Nếu bạn muốn xóa thành phần đa phương tiện khỏi hành động xuất bản, bạn nên xem xét mẫu thành phần đang xử lý (nếu chúng được thêm vào gói, hành động kết thúc mặc định TBB thường chọn chúng và xuất bản chúng). Nhưng hãy nhớ, một thành phần đa phương tiện cần được xuất bản ít nhất một lần khác bạn sẽ không bao giờ nhận được nó trên máy chủ trình bày của bạn.

+1

+1 để chỉ ra sự khác biệt, @Bart. Frank van Puffelen sơ đồ hai phương pháp tiếp cận (_implicit_ thông qua mã mẫu/'AddBinary()' và _explicit_ thông qua một xuất bản đa phương tiện và các mẫu thành phần động) trên [TridionWorld] (http://www.sdltridionworld.com/community/2011_extensions/binaryeventtracker. aspx). –

3

Kiểm tra các đoạn mã dưới đây để loại bỏ, bạn cần phải kiểm tra xem đa phương tiện là pdf hay không nhưng sẽ giúp bạn có được đi. Đây là liên kết tham chiếu được giải thích rất tốt với mã mẫu (mã dưới đây là từ cùng một bài viết).

http://www.tridiondeveloper.com/a-custom-resolver-in-practice

 Component component = (Component)item; 
     if (component.ComponentType == ComponentType.Multimedia) 
     { 
      foreach (ResolvedItem resolvedItem in originalResolveItemList) 
      { 
       if (resolvedItem.Item.Id != item.Id) 
       { 
        resolvedItems.Remove(resolvedItem); // to remove .. 
       } 
      } 
     } 
+0

Tôi nghĩ danh sách resolveditems có các thành phần. Tôi đang cố gắng để loại bỏ các mục nhị phân bên trong các thành phần – user1373140

+0

Làm thế nào bạn xuất bản các nhị phân bên trong các thành phần? Có phải thông qua mã DWT không? Nếu nó là thông qua DWT, thì tại sao bạn muốn loại bỏ các nhị phân bằng cách sử dụng resolver kể từ khi bạn sẽ kết thúc với liên kết nhị phân bị hỏng. Nếu bạn đang xuất bản mã nhị phân, mã trên sẽ đủ nhu cầu của bạn với điều kiện kiểm tra cho 'ComponentType.Multimedia' –

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