4

I am working on Dreamweaver TBB in SDL Tridion 2011 SP1. In the TBB I am using the data from different component presentations.

My Template Building Block looks like this.

Main Component:

<div>@@Component.Schema.Title@@</div>

<!-- TemplateBeginRepeat name="Fields.link" -->

    @@RenderComponentPresentation(Field, "tcm:1-8142-32")@@

<!-- TemplateEndRepeat -->

Component Template: tcm:1-8142-32

Its DWT TBB looks like this.

<!-- TemplateBeginIf cond="Component.Fields.text" --> 
    <div>@@RenderComponentField("text",0)@@</div>
<!-- TemplateEndIf -->

When I previewed the Component I got the output and all component presentations executed as expected.

Output:

SchemaName
    data1
    data2

Then I created the Page with the page TBB.

<html>
    <head></head>
    <body>
        <!-- TemplateBeginRepeat name="Components" -->
            @@RenderComponentPresentation()@@
        <!-- TemplateEndRepeat -->
    </body>
</html>

The output is not as expected. The Component Template "tcm:1-8142-32" is not executed.

output:

SchemaName

I want to make SiteEdit to linked component also.

Do I need to add extra templates to the existing ones? I am using Tridion 2012 UI.

I came to know that we need add isQueryBased, property must be set to true.

If yes, can any one help the command to set it true?

I don't know where the problem lies.

Can any one help me out to modify the code and implement SiteEdit for the embedded Component?

4

1 に答える 1

6

Dreamweaverテンプレートでは、RenderComponenetPresentation()を2つの方法で呼び出すことができます。

  1. ページ上のコンポーネントプレゼンテーションを繰り返し処理している場合(これはあなたが行っていることだと思いますか?)

  2. 何らかの理由で、ページに追加したテンプレートではなく、別のテンプレートを使用してコンポーネントをレンダリングする必要がある場合。

ナンバーワンがあなたがしていることであると仮定して、あなたは正しいテンプレートでページにコンポーネントを追加しました。したがって、次のような引数なしで@@ RenderComponentPresentation()@@を呼び出すことができます。

<html>
    <head></head>
    <body>
        <!-- TemplateBeginRepeat name="Components" -->
            @@RenderComponentPresentation()@@
        <!-- TemplateEndRepeat -->
    </body>
</html>

「IsQueryBased」はあなたの問題とは無関係です。これは、SiteEditおよび動的コンポーネントプレゼンテーションに接続されています。

アップデート -

ここに2つの質問があるようです。

  1. リンクされたコンポーネントに対してRenderComponentPresentationを呼び出すにはどうすればよいですか?
  2. コンポーネントを「SiteEditable」にするにはどうすればよいですか

質問1-を見てください-コンポーネントの配列がページ上のコンポーネントの表示ではないと仮定すると、最初の方法はほぼ正しいです:

@@RenderComponentPresentation(Component.ID,"tcm:xx-xx-xx")@@

配列からコンポーネントIDを取得できるはずですが、ComponentTemplateIDを自分で指定する必要があります。

テストの目的で、まずコンポーネントテンプレートのTcmIDをハードコーディングします。

テンプレートにTcmIDを配置することは悪い習慣であるため、これをパッケージで利用できるようにするには、TBBを作成する必要があります。その後、テストに使用したTcmIDを置き換えることができます。

SiteEditの質問に関連して、問題の正確な性質を詳しく説明する新しい質問を投稿しない場合でも、このガイドが役立つ場合があります。

于 2012-05-25T06:37:35.337 に答える