Могу ли я получить элемент, который был добавлен через редактор страниц в коде моей страницы? (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. Однако после применения изменений (кнопка "Сохранить") вы сможете получить доступ к измененному полю через ваш код при перезагрузке страницы.
Итак, у вас есть два варианта:
- Патч Sitecore "SaveUI" конвейер и добавить процессор к нему, чтобы получить изменения и что-то с ними делать.
- Подождите, пока изменения не будут применены, страница будет перезагружена, и вы сможете получить доступ к измененному полю в вашем коде
Я предполагаю, что под редактором страниц вы подразумеваете представление "Дизайн". Если это так, нажмите кнопку "Источник", чтобы просмотреть разметку и найти элемент управления, содержащий URL-адрес. Присвойте этому элементу управления уникальный идентификатор и убедитесь, что он имеет атрибут runat="server". После этого вы сможете получить доступ к этому элементу управления в коде, используя Me.<uniqueID>
,