2012-10-24 7 views
6

は、私が考えている場合はこれです:モジュラーテンプレートと従来のVBScript CTを混在させることは可能ですか?特に

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

私がいる問題は、「エラー13型の不一致を与え、それはコンポーネントのフィールドにアクセスしようとしたときに私の場合、VBSコードが壊れるということです。 "。

(だから、私は答えを与えるとしたら、私は言うだろう:「部分的に、ノー実用的」)

EDIT 上記DWTは別のCTからなので、効果的にそれはレンダリングですNunoの提案によるパラメータのない過負荷は、残念なことには機能しません。ところで、VBS内の次の行が破損し、正しい値を与えていない:

WriteOut Component.ID 
WriteOut Component.Schema.Title 

EDIT 2

ドミニクは絶対にライトだった:それは行方不明の依存関係をです。

この情報は、一般的に有用にするためにもう少し洞察:

と仮定、元のCTは、この( "VBScriptの[レガシー]" タイプ)のように見えた:

[% 
Call RenderComponent(Component) 
%] 

このCTがあることを意味しました。 VBSベースのPTからも呼ばれています。そのPTには、最初に "#include"ステートメントの大きな塊がありました。

ストーリーが変わりました:同じCTが別のDWTベースのCTから呼び出されています。明らかに(あなたの貴重な助けを借りてありがとう!)、依存関係は現在ではなく、はどこにでも含まれています。元CTが再び動作させるために

ソリューション元CTになるので、明示的にピックを手し、必要なすべてのVBSのTBBSを含めることです:私はあなたのVBScriptとモジュラーページ・テンプレートをレンダリングすることができることを知って

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

どうやってこれに乗っていますか?それを解決するに近い? –

+0

質問を再編集して他の人を助けるために+1してください。 –

答えて

5

はい - レガシーテンプレートとモジュラーテンプレートを混在させることは可能です。おそらく明らかに、あなたは2つのテクニックの間でtemplate building blocksを混ぜ合わせて一致させることはできません。

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

+1

これはあなたが見ているエラーの最も論理的な説明であると私は同意するだろう。私の知る限りでは、複合的なものから "古典的な"スクリプトCPレンダリングを呼び出すことに何も問題はありません... –

4

コンポーネントプレゼンテーション、およびVbScriptページテンプレートを使用すると、モジュラーコンポーネントテンプレートをレンダリングできます。

あなたのエラーはおそらく何か他の原因によるものでしょうか?どのテンプレートを指定せずに通常の@@RenderComponentPresentation()@@コールを試したことがありますか?

+1

私はあなたのエラーが何か他のものに起因するとも思います。最初のパラメータについては、単に "Component"の代わりに "Component.ID"を試しましたか? –

+0

@ニコリについても考えてみましたが、最下位のVBSコードでもComponent.IDにアクセスすることは可能でしたので、間違いなくアイテムはそこまで渡されました。 – esteewhy

2

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

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

+0

ロバート、提案に感謝、私はこの素晴らしいカミソリについて聞いて、それを試すのを待つことができないn回目です(私は私たちの最後のprojで良い機会を逃してしまった: - )。しかし、私は仕事のための*適切なツールを使用することについてのみ夢を見ることができます。 (テンプレートコードでコメントを見るのは楽しいことだ:「サイトの90%で使われている」) – esteewhy

関連する問題