6

特に、私が念頭に置いているのは次のとおりです。

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

私が抱えている問題は、私の場合、コンポーネントフィールドにアクセスしようとすると、VBSコードが壊れて、「エラー13タイプの不一致..」が発生することです。

(それで、私が答えを出すとしたら、「部分的に、実用的ではない」と言うでしょう)

編集 上記のDWTは別のCTからのものであるため、事実上、コンポーネントリンクのレンダリングであるため、Nunoの提案によるパラメータなしの過負荷は残念ながら機能しません。ところで、VBS内の次の行は壊れず、正しい値を示します。

WriteOut Component.ID
WriteOut Component.Schema.Title

編集2

ドミニクは絶対に正しかった:それは欠落している依存関係です。

この情報を一般的に役立つようにするためのもう少し洞察:

元のCTが次のようになっているとします( "VBScript [Legacy]"タイプ):

[%
Call RenderComponent(Component)
%]

このCTは、同じくVBSベースのPTから呼び出されることを意図していました。そのPTには、最初に「#include」ステートメントの大きなチャンクがありました。

今、話は変わります。同じCTが別のDWTベースのCTから呼び出されています。明らかに(貴重な助けに感謝します!)、依存関係は現在どこにも含まれていません。

元のCTを再び機能させるための解決策は、必要なすべてのVBS TBBを明示的に手動で選択して含めることです。これにより、元のCTは次のようになります。

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

3 に答える 3

5

はい-レガシーテンプレートとモジュラーテンプレートを組み合わせて使用​​することは完全に可能です。template building blocksおそらく明らかに、2つの手法を組み合わせて組み合わせることができません。

VBScriptでは、「エラー13タイプの不一致」は、実際には「変数の1つの名前(関数とサブの名前を含む)を認識しません」を意味する秘密のコードとして使用されることがあります。VBScriptテンプレートエンジンでは、ページテンプレートは、コンポーネントテンプレートのスコープ内にある可能性があります。たとえば、CTで使用できるようにPTに#includeを配置することは非常に一般的でした。私の推測では、コンポーネントテンプレートはそのような関数を使用しようとしていて、それを見つけられません。

于 2012-10-24T16:00:22.910 に答える
4

VBScriptコンポーネントプレゼンテーションを使用してモジュラーページテンプレートをレンダリングでき、VbScriptページテンプレートもモジュラーコンポーネントテンプレートをレンダリングできることを知っています。

あなたのエラーはおそらく他の何かが原因ですか?どのテンプレートを指定せずに、通常の@@RenderComponentPresentation()@@呼び出しを使用してみましたか?

于 2012-10-24T15:19:41.740 に答える
2

ページテンプレートは、Razor、VBS、XSLTなどのさまざまなフレーバーの複合テンプレートをレンダリングできます。

問題は、テンプレートに含まれているTBBに起因します。多くの場合、Razorテンプレートは、VBScriptにのみ存在する関数を呼び出す必要があります。したがって、テンプレートを移行する際の開始点は、常にヘルパー関数とユーティリティライブラリから開始することです。次に、使用している最も一般的なPT / CTを新しい形式(Razor、XSLT、DWTなど)に移行します。これは、新しい形式に時間があれば、残りのテンプレートを移行するための優れた基盤を提供します。

于 2012-10-24T15:45:06.593 に答える