2012-05-25 1 views
4

Я работаю над Dreamweaver TBB в SDL Tridion 2011 SP1. В TBB я использую данные из различных презентаций компонентов.Обработка многокомпонентных презентаций в шаблоне Dreamweaver Строительный блок в SDL Tridion 2011

My Template Building Block looks like this. 

Главный компонент:

<div>@@[email protected]@</div> 

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

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

<!-- TemplateEndRepeat --> 

Компонент Шаблон: кубометр: 1-8142-32

Ее DWT ТВВ выглядит следующим образом.

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

Когда я просмотрел компонент, я получил вывод и все презентации компонентов выполнялись, как ожидалось.

Выход:

SchemaName 
    data1 
    data2 

Затем я создал страницу со страницей TBB.

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

Выход не такой, как ожидалось. Шаблон компонента «tcm: 1-8142-32» не выполняется.

выход:

SchemaName 

Я хочу сделать SiteEdit для связанного компонента также.

Нужно ли добавлять дополнительные шаблоны к существующим? Я использую интерфейс Tridion 2012.

Я пришел к выводу, что нам нужно добавить isQueryBased, свойство должно быть установлено в true.

Если да, может ли кто-нибудь помочь команде установить ее правду?

Я не знаю, где проблема.

Может ли кто-нибудь помочь мне изменить код и реализовать SiteEdit для встроенного компонента?

+0

Обновлен ответ на вопрос. Но проблема не решена. – Patan

+0

Я хотел бы реализовать редактирование сайта для компонентов, связанных с основным компонентом, путем компоновки компонентов. – Patan

+0

Я обновил свой ответ для вас, надеюсь, это поможет –

ответ

6

В шаблоне Dreamweaver RenderComponenetPresentation() можно назвать двумя способами.

  1. Если вы переборе компонентному презентации на странице (которые я думаю, это то, что вы делаете?)

  2. Если по какой-то причине вам нужно сделать компонент с другим шаблоном, не тот, с которым вы добавили его на страницу.

Предполагая, что номер один является тем, что вы делаете, вы добавили компонент на страницу с помощью правильного шаблона. Таким образом, вы можете позвонить @@ RenderComponentPresentation() @@ без аргументов, как это:

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

"IsQueryBased" не имеет никакого отношения к вашей проблеме. Это связано с презентациями SiteEdit и Dynamic Component.

Update -

Похоже, у вас есть 2 вопроса здесь:

  1. Как я могу назвать RenderComponentPresentation для связанных компонентов
  2. Как я могу сделать компонентных быть "SiteEditable"

Рассмотрение вопроса 1 - Предполагая, что массив компонентов не представляет собой компонентные презентации на странице, ваш первоначальный метод был почти правильным:

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

Вы должны быть в состоянии получить идентификатор компонента из массива, но вам нужно будет указать ComponentTemplate ID самостоятельно.

Для целей тестирования, прежде всего, введите жесткий код Tcm ID шаблона компонента.

С тех пор, как Tcm ids в шаблонах является плохой практикой, вам нужно будет написать TBB, чтобы сделать это доступным в пакете для вас. Затем вы можете заменить Tcm Id, который вы использовали для тестирования.

В связи с вашим вопросом SiteEdit this guide может помочь, если не опубликовать новый вопрос с подробным описанием конкретной проблемы.

+0

Я тоже пробовал с этим. Никаких изменений в выходе. Я пытаюсь реализовать редактирование сайта для компонентов, связанных с основным компонентом. – Patan

Смежные вопросы