2012-10-24 32 views
6

Đặc biệt, trường hợp tôi có trong tâm trí là thế này:Có thể xen kẽ mô hình templating và VBScript CT cũ không?

@@RenderComponentPresentation(Component, "<vbs-legacy-ct-tcm-uri>")@@ 

Vấn đề tôi đang gặp là trong trường hợp vi phạm đang VBS của tôi khi nó cố gắng truy cập vào các lĩnh vực thành phần, đem lại cho "Lỗi 13 Loại không phù hợp. ".

(Vì vậy, nếu tôi được cung cấp cho các câu trả lời, tôi muốn nói: "Một phần, không sử dụng thực tế")

EDIT Các DWT trên là từ một CT, vì vậy hiệu quả đó là một vẽ của liên kết thành phần, đó là lý do tại sao quá tải parameterless theo đề xuất của Nuno sẽ không hoạt động không may. BTW, những dòng sau bên VBS không phá vỡ và đưa ra giá trị đúng:

WriteOut Component.ID 
WriteOut Component.Schema.Title 

EDIT 2

Dominic đã hoàn toàn wright: đó là một phụ thuộc mất tích.

Một cắn cái nhìn sâu sắc hơn để làm cho thông tin này thường hữu ích:

Giả sử, CT ban đầu trông như thế này ("VBScript [Legacy]" type):

[% 
Call RenderComponent(Component) 
%] 

CT này có nghĩa là phải được gọi từ PT, cũng dựa trên VBS. PT đó có một đoạn lớn các câu lệnh "#include" ngay từ đầu.

Bây giờ câu chuyện thay đổi: CT giống nhau đang được gọi từ một CT khác, dựa trên DWT, CT. Rõ ràng (cảm ơn tất cả vì sự giúp đỡ vô giá của bạn!), Các phụ thuộc bây giờ là không phải là được bao gồm ở mọi nơi.

Các giải pháp để làm gốc CT hoạt động trở lại được để chọn thủ công một cách rõ ràng và bao gồm tất cả VBS TBBs cần thiết, vì vậy CT ban đầu trở thành:

[% 
#include "tcm:<uri-of-vbs-tbb>" 
Call RenderComponent(Component) 
%] 
+0

Bạn đang tiếp tục thế nào với điều này? Gần hơn để giải quyết nó? –

+0

+1 để chỉnh sửa lại câu hỏi để giúp những người khác trong tương lai. –

Trả lời

5

Có - hoàn toàn có thể kết hợp và khớp mẫu cũ và mô-đun. Có lẽ rõ ràng, bạn không thể trộn và kết hợp template building blocks giữa hai kỹ thuật.

Trong VBScript "Lỗi 13 Loại không phù hợp" đôi khi được sử dụng làm mã bí mật thực sự có nghĩa là "Tôi không nhận ra tên của một trong các biến của bạn, (bao gồm tên hàm và Subs)" động cơ, các biến từ mẫu trang có thể nằm trong phạm vi trong mẫu thành phần của bạn; nó đã rất phổ biến, ví dụ, để đưa #includes trong PT để họ có thể được sử dụng bởi CT. Tôi đoán là mẫu thành phần của bạn đang cố gắng sử dụng một hàm như vậy và không tìm thấy nó.

+1

Tôi sẽ đồng ý rằng điều này có vẻ giải thích hợp lý nhất cho lỗi bạn đang thấy. Theo hiểu biết của tôi thì không có gì sai khi gọi một tập lệnh CP cổ điển "" từ một hợp chất ... –

4

Tôi biết rằng bạn có thể làm cho một Modular Trang Template với VBScript Bản trình bày thành phần và mẫu trang VbScript có thể hiển thị Mẫu thành phần mô-đun.

Lỗi của bạn có thể do điều gì đó khác? Bạn đã thử chỉ sử dụng cuộc gọi @@RenderComponentPresentation()@@ thông thường mà không chỉ định mẫu nào?

+1

Tôi cũng nghĩ rằng lỗi của bạn là do cái gì khác. Đối với tham số đầu tiên bạn đã thử "Component.ID" thay vì chỉ "Thành phần"? –

+0

@Nickoli Nghĩ về (và đã cố gắng) điều đó nữa, nhưng thỏa thuận là ngay cả trong mã VBS phía dưới nhất vẫn có thể truy cập Component.ID, vì vậy chắc chắn, mục đó đã được chuyển đến đó rất tốt. – esteewhy

2

Mẫu trang có thể hiển thị Mẫu hợp chất có các hương vị khác nhau - ví dụ: Dao cạo râu, VBS hoặc XSLT.

Sự cố đến từ các TBB được bao gồm trong Mẫu. Thường thì các mẫu Razor sẽ cần phải gọi các hàm chỉ tồn tại trong VBScript. Vì vậy, điểm khởi đầu khi di chuyển các mẫu luôn bắt đầu với các hàm trợ giúp và các thư viện tiện ích. Sau đó di chuyển PT/CT chung nhất bạn phải định dạng mới (Razor, XSLT, DWT, v.v.). Điều này cung cấp một cơ sở tốt đẹp để di chuyển phần còn lại của các mẫu khi bạn có thời gian để định dạng mới.

+0

Robert, cảm ơn bạn đã gợi ý, đó là lần thứ n tôi nghe về Razor tuyệt vời này, và không thể chờ đợi để thử nó (tôi đã bỏ lỡ cơ hội tốt trên proj cuối cùng của chúng tôi: - /). Nhưng, tôi chỉ có thể mơ về việc sử dụng một công cụ * thích hợp cho công việc. (Đó là một niềm vui cay đắng để xem bình luận trong một mã mẫu: "Được sử dụng trong 90% của trang web.") – esteewhy

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