Как использовать SiteEdit в DD4T в Tridion

Кто-нибудь может подсказать мне, как использовать специальный синтаксис SiteEdit или теги в шаблоне Razor в коде DD4T? Я видел в нем связанные с Site Edit классы, но не мог понять, как использовать теги SiteEdit в представлении, где был какой-то синтаксис, похожий на Dreamweaver, например. RenderComponentField или же tcdl:ComponentField который мы использовали в Dreamweaver. Я очень новичок в DD4T и использую SiteEdit 2009 SP3 и SDL Tridon 2011 SP1.

Заранее спасибо.

Обновление: мы попробовали реализацию, упомянутую в ответе, но, к сожалению, мы получаем ошибку, когда мы обращаемся к странице в прокси с указанием "Неверный шаблон - HTML недопустим, вероятно, потому что код вашего шаблона выдает недопустимый HTML, такой как тег ap внутри другой тег p. Проверьте свой HTML-код с помощью средства проверки, такого как служба проверки разметки W3C, исправьте шаблон и повторите публикацию." Я предполагаю, что это потому, что контент XML помещается на html-страницу из-за использования динамических страниц и компонентов TBB, которые мы использовали в наших компонентах и ​​шаблонах страниц.

Давайте знать, как продолжить дальше.

2 ответа

Разметка SiteEdit не создается, как это делается в шаблоне Dreamweaver, вы сами несете ответственность за размещение разметки для ваших редактируемых полей в представлении Razor. Хорошая вещь для этого - то, что это работает для подобного для SiteEdit 2009 SP3 и UI 2012. Недостатком для UI 2012 является то, что он не слушает (пока) включение встроенного редактирования, которое вы можете установить в компоненте или шаблонах страницы (то, что мы должны рассмотреть для будущей версии DD4T).

Все основано на DD4T SiteEditHelper учебный класс. Вы начинаете в вашей странице просмотра (до </body> тег), сделав следующий звонок:

@Html.SiteEditPage(Model)

Это запишет разметку страницы, и если вы установите стиль "SiteEdit2012" в вашем SiteEdit_config.xml, он также запишет скрипт начальной загрузки, необходимый для пользовательского интерфейса 2012.

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

@{var ComponentPresentation = ViewBag.ComponentPresentation as IComponentPresentation;}
<div>
  @Html.SiteEditComponentPresentation(ComponentPresentation)
</div>

Убедитесь, что вы записали это внутри DIV или другого элемента, который может обозначить границу вашей презентации компонентов. Для полей компонента похожую историю вы можете использовать:

<div>
  @Html.SiteEditField(Model, Model.Fields["FieldName"])
  @Model.Fields["FieldName"].Value
</div>

Помимо изменений в ваших представлениях, как описал Барт, вам также нужно поместить файл конфигурации в корень вашего веб-приложения с именем SiteEdit_config.xml. Это должно выглядеть так:

<?xml version="1.0" encoding="utf-8" ?>
<siteEdit enabled="true" tridionHostUrl="http://tridion.my.com">
  <contextPublications>
    <contextPublication id="10" componentPublication="3" pagePublication="9" publishPublication="10" />
    <contextPublication id="11" componentPublication="3" pagePublication="9" publishPublication="11" />
  </contextPublications>
</siteEdit>

Вы должны перечислить все ваши активные публикации здесь. DD4T пытается сопоставить вашу текущую страницу с правильной публикацией контекста (на основе атрибута 'id'). Если он не может найти его, SiteEdit будет отключен. Другие атрибуты позволяют вам контролировать поведение SiteEdit.

  • componentPublication: здесь будут созданы новые компоненты
  • pagePublication: здесь будут создаваться новые страницы (не используются в Tridion UI 2012)
  • publishPublication: страницы и компоненты будут переизданы из этого контекста (обычно совпадает с идентификатором)

DD4T также можно легко настроить для использования с Tridion UI 2012. Просто измените первый элемент конфигурации следующим образом:

<?xml version="1.0" encoding="utf-8" ?>
<siteEdit enabled="true" style="SiteEdit2012" tridionHostUrl="http://tridion.my.com">
...
</siteEdit>
Другие вопросы по тегам