Циклические ссылки на компоненты во встроенном поле

У нас есть "компонент A", который имеет многозначное поле типа "встроенное поле". Встроенное поле, в свою очередь, имеет многозначное поле типа "Ссылка на компонент".

Это выглядит так:Компонент A -> Встроенные поля Shcema -> Ссылки на компоненты

Как перебрать и получить доступ к полям 'Component Links' в Dreamweaver? Также поле компонента поддерживает три разные схемы, и мы хотим проверить имена этих схем в dreamweaver.

Я нашел этот пост полезным. Но больше деталей было бы действительно здорово.

5 ответов

Посмотрите на эти вопросы:

И эта страница из поваренной книги практики Tridion:

Они охватывают наиболее распространенные проблемы, с которыми вы можете столкнуться при доступе к полям в DWT.

Если они не отвечают на ваш вопрос, обновите ваш вопрос:

  1. соответствующий фрагмент XML вашего компонента
  2. фрагмент DWT, показывающий, что вы уже пробовали

Вы можете легко перебрать ссылку на компонент во встроенном поле с несколькими значениями, но нет прямого способа получить значения ссылки на компонент, вы должны использовать либо расширение dwt, либо.net tbb. Есть несколько доступных на sdltridionworld.com.

Я сделал это ранее с вложенным шаблоном. Вы также можете попробовать вложенный / суб-шаблон из вашего основного dwt tbb на основе схемы компонента поля ссылки компонента в цикле.

Также я бы предложил использовать бритвенные шаблоны.

Вы можете перебрать абзац поля с несколькими значениями во абзацах поля встроенной схемы следующим образом:

<!-- TemplateBeginRepeat name="Component.Fields.paragraphs" -->

    <h2>@@Field.header@@ (@@TemplateRepeatIndex@@)</h2>
    <!-- TemplateBeginRepeat name="Field.paragraph" -->
        <p>@@Field@@</p>
    <!-- TemplateEndRepeat -->

<!-- TemplateEndRepeat -->

Как ранее упоминалось Викасом, повторение поля связи многозначных компонентов многозначного поля встроенной схемы является относительно простым. Ваш код DWT должен следовать этой форме:

<!-- TemplateBeginRepeat name="XML Name of Embedded Schema Fields" -->
    <!-- TemplateBeginRepeat name="XML Name of multivalued Component Link field" -->
        @@Field@@  - Should write out the TCM ID of your linked component
    <!-- TemplateEndRepeat -->
<!-- TemplateEndRepeat -->

Однако вы не можете получить доступ к полям или деталям схемы этих компонентов с помощью готовых шаблонов Dreamweaver.

Вы можете:

  1. установите Dreamweaver Get eXtension на свой сервер Content Manager, который позволит вам извлекать поля связанных компонентов (среди прочего), используя @@Get(...)@@ синтаксис
  2. Используйте "Получить связанные компоненты" .Net TBB из стандартных строительных блоков шаблона SDL Tridion 2011 перед вашим шаблоном Dreamweaver, который поместит связанные компоненты в пакет шаблонов, чтобы вы могли выполнять итерации по ним напрямую.
  3. Напишите свой собственный.Net TBB для обработки вашей конкретной бизнес-логики, связанной с этими ссылками, и выводите html (не рекомендуется) или именованный элемент пакета, элементы или массив элементов, которые вы можете обрабатывать из вашего DWT.
  4. Вызовите другой (вложенный) шаблон компонента из вашего DWT с помощью @@RenderComponentPresentation(Field, "tcm:x-xx-32")@@
  5. Любая комбинация вышеперечисленного

Пожалуйста, попробуйте использовать следующий код:

          <!-- TemplateBeginRepeat name="paragraphs" -->
               <!-- TemplateBeginRepeat name="Internal_Link" -->
                 <!-- TemplateBeginIf cond = "Internal_Link != ''" -->
                    <p> @@Component.ID@@ </p>
                 <!-- TemplateEndIf -->
               <!-- TemplateEndRepeat -->
         <!-- TemplateEndRepeat -->

Для проверки нулевого компонента вы можете использовать следующий код:

          <!-- TemplateBeginRepeat name="paragraphs0.Internal_Link" -->
Другие вопросы по тегам