6

私は次のようにTridionバイナリリンクを生成しています:

  1. Razor TBBは、バイナリリンクのリンクリゾルバー構文を生成します
  2. リンクリゾルバーTBBはTCDLを生成します。

出力は、出力タイプRELの動的コンポーネントテンプレートとして公開されます。パブリケーションターゲットはASP.NETを指定します。

ブローカーデータベースのCOMPONENT_PRESENTATIONSテーブルに表示される内容は、次のように出力されます。

<tcdl:Link type="binary" origin="tcm:0-0-0" 
           destination="tcm:34-669" templateURI="tcm:0-0-0" 
           linkAttributes="" textOnFail="true" addAnchor="" 
           variantId="">Document2</tcdl:Link>

したがって、少なくとも「Document2」というテキストが表示されることを期待します。

バイナリリンクコントロールを手作りした場合<tridion:BinaryLink..../>、これは問題なく機能しますが、上記のTCDLによって生成された目に見える出力はありません。

何がうまくいかないのでしょうか?次に何を調査する必要がありますか?

4

1 に答える 1

7

LinkResolverTBBがバイナリタイプの正しいケースを生成しないのと同じ動作に気づきました。<tcdl:Link type="binary" ../>の代わりに生成されます(大文字のB<tcdl:Link type="Binary" ../>ではなく小文字のbに注意してください。キャッチするのは難しいです)。REL TCDLTagRenderでは大文字と小文字が区別され、小文字のtype:binaryのtcdl:linkは解決されません。また、cdログファイルに警告メッセージが表示されます(ログレベルが警告またはデバッグに設定されていると仮定します)。

"WARN  LinkTagRenderer - Link type does not exist."

回避策は、新しいTBBを導入binaryして、小文字の出力を大文字に置き換えることです。BinaryこれをTBBの一部として含めて、pdf、docなどのマルチメディアリンクのRTFフィールドバイナリリンクを解決しました。

TBBで以下のように、文字列を小文字のバイナリからバイナリに置き換えます。

 string output = package.GetValue(Package.OutputName);
 output = output.Replace("type=\"binary\"", "type=\"Binary\"" );
于 2013-01-23T04:29:40.763 に答える