2012-04-18 19 views
6

Tôi gặp sự cố xuất bản tệp nhị phân (tệp PDF) từ Tridion bằng cách sử dụng Razor Templating.Xuất bản các tệp PDF khi sử dụng các mẫu của Tridion Razor

Tôi có một mẫu thành phần được đặt thành 'Được xuất bản dưới dạng một thành phần động' với một lược đồ đa phương tiện được liên kết duy nhất.

Tôi đang sử dụng Razor Mediator eXtension và Template Component chứa hai mẫu Building Blocks:

  1. Một Razor Template rằng sản lượng một số HTML và các liên kết đến nhị phân trong phần đa phương tiện.
  2. Default Hoàn Actions TBB chứa sau:
    • Publish Binaries trong gói
    • xử lý nối kết
    • Target Nhóm Personalization
    • Cleanup Template
    • Chuyển đổi XML sang HTML

T ông Razor Template chứa đoạn mã sau (tôi đã đơn giản hóa này hơi): enter image description here

này dường như được giải quyết vào liên kết nhị phân một cách chính xác và tạo ra động Hợp phần trình bày sau đây: enter image description here

Vấn đề mà tôi đang gặp là bản thân nhị phân không bao giờ được thêm vào gói và do đó không được xuất bản.

Khi Bộ hòa giải dao cạo có cài đặt 'trích xuất' trong tệp Tridion.ContentManager.config thì tôi nghi ngờ rằng các tệp nhị phân nên được thêm vào gói bởi người hòa giải. Tôi đã chắc chắn rằng các thiết lập extractBinaries được đặt thành 'true', tuy nhiên nhị phân không được thêm vào gói (mặc dù Thành phần đa phương tiện được xử lý nằm trên gói như một mục tridion/component).

Có ai biết nếu chức năng này có sẵn và làm việc trong Bộ hòa giải dao cạo không? Tôi nghi ngờ rằng Razor Mediator đang mong đợi mã liên kết ở định dạng cụ thể, nhưng tôi không thể tìm thấy bất cứ điều gì về điều này trong documentation.

Tôi cũng đã cố gắng thêm 'Binaries Extract từ Html' TBB để Template Component (sau Template Razor) nhưng tôi nhận được lỗi sau: "The Output mục phải có tài sản TCMURI quy định". Tôi nghi ngờ rằng điều này là do cách mà Bộ hòa giải dao cạo thêm mục 'Đầu ra' vào gói.

Tôi có thể viết TBB mới để đảm bảo rằng tệp nhị phân được thêm vào gói, nhưng tôi muốn tránh thực hiện việc này nếu chức năng đã có sẵn với Trình giải dao cạo.

Xin cảm ơn trước.

P.S. Xin lỗi cho những hình ảnh. Stackoverflow không muốn định dạng mã một cách chính xác.

+0

http://stackoverflow.com/editing-help – SLaks

+0

SLacks - Khi liên kết của bạn cho biết, tôi nghĩ rằng vấn đề là "Markdown và HTML bị bỏ qua trong một khối mã". Cảm ơn, Jon –

+0

Bạn có chắc chắn rằng

Trả lời

7

Thật không may, Bộ hòa giải dao cạo hiện không thêm tệp nhị phân PDF vào gói khi trong thẻ (do đó không nhận được TBB xuất bản), mặc dù tôi có cảm giác khá tốt rằng phiên bản 1.3 sẽ được chăm sóc điều này ;).

Trong thời gian chờ đợi, bạn có thể sử dụng loại "Thêm phụ thuộc nhị phân phụ thuộc" của TBB. Tôi không có nó trên tay vào lúc này, nhưng hãy cho tôi biết nếu bạn cần nó và tôi sẽ gửi mã cho bạn sau tối nay.

EDIT Hủy bỏ tuyên bố của tôi về nó không được thêm vào gói, tôi đã nghĩ đến một trường hợp khác.

Hãy thử như sau thay vì:

<a href="@Component.ID">@Component.Metadata.title</a> 
+0

Cảm ơn Alex. Tôi nghĩ rằng các chức năng sẽ có trong đó - Tôi chỉ không biết cú pháp. Tôi sẽ thử ngay sau khi tôi quay lại văn phòng và đăng cập nhật. –

+0

Xin chào Alex. Cảm ơn bạn đã phản hồi về điều này. Tôi đã thử nghiệm nó và nó xuất hiện rằng bằng cách sử dụng cú pháp mà bạn đề nghị thêm thành phần PDF vào gói và xuất bản nó. Tuy nhiên, điều này lại gây ra một vấn đề khác ở chỗ nó không gắn thêm tcmId của Component vào tên tệp. Có nghĩa là có lỗi nếu hai tệp PDF (chứa trong Thư mục khác nhau trong Tridion) có cùng tên tệp được xuất bản thì có lỗi xuất bản. Vì trang web của tôi có hàng nghìn tệp PDF, tôi nghi ngờ rằng tôi có thể phải sử dụng một TBB riêng cho việc này. Cảm ơn nhiều. –

0

Tôi chưa sử dụng Trình giải dao cạo, nhưng bạn đã thử thêm Default Finish Actions hoặc các TBB Publish Binaries in Package vào mẫu của mình chưa?

+0

Xin chào Chris. Mẫu Thành phần đã chứa TBB 'Mặc định Kết thúc Mặc định' (có chứa 'Xuất bản nhị phân trong Gói' TBB). Vấn đề là nhị phân không bao giờ xuất hiện trên gói. Cảm ơn, Jon –

2

này đã làm việc cho tôi:

@{ 
    var item = TridionHelper.Package.CreateMultimediaItem(Component.ID); 
    TridionHelper.Package.PushItem("CurrentMultimedia", item); 
} 

Tiếp theo, tất nhiên bởi PublishBinariesInPackage, mặc dù như bạn cũng có thể đạt được Engine trong một cách tương tự, có lẽ là một AddBinary trực tiếp cũng sẽ hoạt động.

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