2012-09-05 26 views
5

Khi chúng tôi xuất bản một số thành phần trang/động từ tridion là có thể thêm một số tệp/nội dung đa phương tiện bên ngoài (ví dụ: hình ảnh jpg) vào gói thực thi/kết xuất hiện tại time.So rằng gói vận chuyển cuối cùng có tệp nhị phân này xuất hiện cùng với nội dung được xuất bản ban đầu không? Điều này có thể đạt được bằng cách sử dụng tùy biến trình thu thập dữ liệu tridion/resolver không? Nếu có, vui lòng cung cấp một số đầu vào.đẩy tập tin đa phương tiện bên ngoài vào gói tại thời điểm xuất bản tridion

* Lưu ý: * Nội dung nhị phân cần được đẩy vào gói lúc xuất bản không có ở dạng thành phần đa phương tiện trong tridion, nó nằm ở vị trí tệp khác bên ngoài tridion CMS.Instead thành phần được sử dụng bên trong thành phần được xuất bản/trang có một số hình ảnh giả. chúng tôi dự định thay thế hình ảnh gốc bằng hình ảnh gốc lúc xuất bản (hiển thị/giải quyết) thời gian.

Vì chúng tôi có số lượng lớn nội dung nhị phân được lưu trữ trong công cụ DAM, chúng tôi không muốn dữ liệu đó được tái tạo thành thành phần đa phương tiện trong tridion, chúng tôi muốn sử dụng dữ liệu đó bằng cách truy vấn công cụ DAM và đính kèm nó vào gói tridion lập luận tham chiếu logic để duy trì ánh xạ một đến một giữa hàm compy đa phương tiện stub với nội dung gốc trong một số ánh xạ DB để tham khảo).

Vui lòng cho chúng tôi biết nếu có giải pháp nào để đính kèm nội dung nhị phân bên ngoài vào gói tại thời điểm xuất bản.

Trả lời

10

Cách tốt nhất - và dễ nhất - là sử dụng cơ chế được cung cấp bởi Tridion out-of-the-box cho việc này. Tạo thành phần đa phương tiện mới, chọn "Bên ngoài" trong trình đơn thả xuống loại tài nguyên và nhập URL vào đối tượng. Miễn là bạn có thể giải quyết nó bằng một URL, nó sẽ hoạt động chính xác như bạn muốn (mục sẽ được thêm vào gói và được gửi đến máy chủ phân phối).

Nếu điều này không đủ tốt cho bạn, thì có, bạn có thể tự thêm nó vào gói. Tôi đã thực hiện điều này trong quá khứ với mã hơi giống như thế này:

FileInfo file = // Weird logic to get a FileInfo object from external system 
Item item = package.GetItem("My original Item"); 
item.SetAsStream(file.OpenRead()); 

Điều này đã thay thế thành phần ban đầu của tôi bằng tệp thực tế tôi muốn. Điều này sẽ làm việc cho bạn NẾU thành phần ban đầu cũng là một thành phần đa phương tiện. Nếu không, chỉ cần tạo một mục mới với tên riêng của bạn, v.v. Nếu có thể, hãy sử dụng quá trình out-of-the-box thay thế.

PS: FileInfo Class.

9

Như Nuno gợi ý cách tốt nhất là sử dụng thành phần đa phương tiện với loại tài nguyên 'bên ngoài'. Bạn có thể không cần tạo các tài liệu này theo cách thủ công, bạn có thể tự động hóa bằng các chương trình API hoặc dịch vụ cốt lõi.

Một cách khác mà tôi đã sử dụng trước đây để tạo tệp zip vào thời gian chạy và thêm cùng một gói với mã sau. Hy vọng nó có thể giúp đỡ.

using (MemoryStream ms = new MemoryStream()) 
       { 
        zip.Save(ms); 
        downloadAllInOneURL = String.Format("ZipAsset{0}.zip", uniqueZipID); 
        downloadAllInOneURL = m_Engine.PublishingContext.RenderedItem.AddBinary(ms, downloadAllInOneURL, "", "application/zip").Url; 
        downloadAllInOneSize = getSize(ms.Length); 

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