Могу ли я получить элемент, который был добавлен через редактор страниц в коде моей страницы? (Sitecore, C#)

Я новичок в Sitecore, и в коде моей страницы я устанавливаю значения для аналитики Google на основе информации, которую я имею для ранее разработанной страницы (я не могу изменить базовую структуру этих страниц). Большинство полей, которые мне нужны, задаются в Sitecore в редакторе контента, поэтому я могу получить к ним доступ через

Sitecore.Content.Item.Fields["fieldname"]

Однако одна вещь, которая мне нужна, - это URL-адрес изображения логотипа на каждой странице, который вставляется с помощью редактора страниц. Могу ли я получить объекты Page Editor на странице в коде позади?

3 ответа

Google Analytics на стороне клиента; рассмотрите возможность использования клиентского скрипта для получения значения URL логотипа. Для этого ваш скрипт должен будет выполняться после загрузки страницы.

Если вы используете jQuery, вы можете сделать что-то вроде этого

jQuery(document).ready(){
    var logoUrl = jQuery('.logo').attr("src");
}

Нет, редактор страниц (Experience Editor) работает с JavaScript, чтобы что-то менять на странице. Затем изменения, внесенные на странице, передаются на сервер и применяются там, но это никак не связано с кодом вашей страницы. Все это делается с помощью пользовательских конвейеров Sitecore. Однако после применения изменений (кнопка "Сохранить") вы сможете получить доступ к измененному полю через ваш код при перезагрузке страницы.

Итак, у вас есть два варианта:

  1. Патч Sitecore "SaveUI" конвейер и добавить процессор к нему, чтобы получить изменения и что-то с ними делать.
  2. Подождите, пока изменения не будут применены, страница будет перезагружена, и вы сможете получить доступ к измененному полю в вашем коде

Я предполагаю, что под редактором страниц вы подразумеваете представление "Дизайн". Если это так, нажмите кнопку "Источник", чтобы просмотреть разметку и найти элемент управления, содержащий URL-адрес. Присвойте этому элементу управления уникальный идентификатор и убедитесь, что он имеет атрибут runat="server". После этого вы сможете получить доступ к этому элементу управления в коде, используя Me.<uniqueID>,

Другие вопросы по тегам