Несколько динамических CP SiteEdit на странице
У нас есть SiteEdit 2009 SP2 в SDL Tridion 2009 SP1, и он нормально работает для обычных опубликованных страниц. Это также работает нормально, если у нас есть одна динамическая презентация компонентов (DCP) на странице. Но когда у нас есть несколько DCP на странице, мы берем только первый и игнорируем все остальные.
Вот мой код
<xsl:variable name="SE_CP_MarkUP">
<![CDATA[ <!-- Start SiteEdit Component Presentation: {"ID" : "cp_%ID%", "ComponentID" : "%ID%", "ComponentTemplateID" : "tcm:XX-XXXXX-32", "Version" : 0, "IsQueryBased" : true } -->]]>
Я использую эту переменную в цикле
<xsl:value-of select="XXXX:RegexStringReplace($SE_CP_MarkUP,'%ID%',@ID)" disable-output-escaping="yes"/>
Пожалуйста, предложите, в чем может быть проблема?
Более детально:
Сгенерированный HTML
<div>
<!-- Start SiteEdit Component Presentation: {"ID" : "cp_tcm:13-287142", "ComponentID" : "tcm:13-287142", "ComponentTemplateID" : "tcm:13-286965-32", "Version" : 3, "IsQueryBased" : true } -->
HTMLConent
</div>
<div>
<!-- Start SiteEdit Component Presentation: {"ID" : "cp_tcm:13-287162", "ComponentID" : "tcm:13-287162", "ComponentTemplateID" : "tcm:13-286965-32", "Version" : 2, "IsQueryBased" : true } -->
HTMLConent
</div>
<div>
<!-- Start SiteEdit Component Presentation: {"ID" : "cp_tcm:13-287204", "ComponentID" : "tcm:13-287204", "ComponentTemplateID" : "tcm:13-286965-32", "Version" : 1, "IsQueryBased" : true } -->
HTMLConent
</div>
<div>
<!-- Start SiteEdit Component Presentation: {"ID" : "cp_tcm:13-287234", "ComponentID" : "tcm:13-287234", "ComponentTemplateID" : "tcm:13-286965-32", "Version" : 4, "IsQueryBased" : true } -->
HTMLConent
</div>
<div>
<!-- Start SiteEdit Component Presentation: {"ID" : "cp_tcm:13-287251", "ComponentID" : "tcm:13-287251", "ComponentTemplateID" : "tcm:13-286965-32", "Version" : 3, "IsQueryBased" : true } -->
HTMLConent
</div>
Настройки SiteEdit
<!-- SiteEdit Settings: { "PageID" : "tcm:13-287332-64", "PageVersion" : 2, "TargetTypeID" : "", "ComponentPresentationLocation" : 1, "BluePrinting" : { "PageContext" : "tcm:0-8-1", "ComponentContext" : "tcm:0-13-1", "PublishContext" : "tcm:0-13-1"}} -->
Я получаю выше HTML во время выполнения. Я могу открыть только первый компонент, используя siteedit при наведении курсора на первый CP, и ничего не происходит, если я наведите курсор на любые другие CP.
Также нет ошибки JS на странице.
Спасибо, Викас Кумар
5 ответов
Разметка представления компонента SiteEdit всегда должна быть заключена в элемент HTML, например, в DIV, чтобы SiteEdit мог различать начало и конец представления компонента.
Таким образом, в вашем цикле вы должны вывести что-то вроде:
<div>
<xsl:value-of select="XXXX:RegexStringReplace($SE_CP_MarkUP,'%ID%',@ID)" disable-output-escaping="yes"/>
<!-- output the content here -->
</div>
Спасибо за просмотр, я только что понял, что SiteEdit делает свою работу. Все div-элементы разметки SiteEdit имеют одинаковую абсолютную позицию, так что где бы я ни находился, div отображается вверху.
Я работаю с командой дизайнеров, чтобы разобраться.
Спасибо, Викас Кумар
Обычно я бы сказал, что это связано с тем, что каждому компоненту презентации не присваивается уникальный идентификатор. Но похоже, что вы уже это покрыли.
Я предполагаю, что вы пропустили установочный комментарий в своем вопросе просто из соображений краткости, верно?
Есть ли шанс, что вы могли бы дать нам весь HTML? Конечно, удалите любой конфиденциальный контент, но, пожалуйста, убедитесь, что проблема не устранена.
Вы уверены, что у пользователя есть права на все компоненты? И все ли они существуют
Вероятно, проще всего проверить инструменты разработчика вашего браузера. Найти запрос на GetComponentAndSchemas
,
В теле этого запроса (то есть части, которая отправляется на сервер) вы найдете все компоненты, которые запрашивает SiteEdit. Так что, если это не охватывает все ваши Компоненты, он как-то не нашел их в HTML.
Затем в ответе на этот запрос вы должны найти запрошенные компоненты и схемы, на которых они основаны. Если некоторые Компоненты отсутствуют, они как-то отфильтровываются на сервере. Скорее всего, потому что у пользователя нет прав, но также может быть и то, что они не существуют в публикации 13.
Я столкнулся с той же проблемой, особенно если у вас есть html5-теги вокруг тегов siteedit span/div. Вы проверили эту статью (от Барта), это может помочь. Это помогло в моем случае.
http://www.sdltridionworld.com/articles/sdltridion2011/siteedit_zindex.aspx