Отношения между предметами сайта
Я тихий новичок в sitecore. Я создаю страницу плана праздника, где каждый план имеет разные пакеты, а каждый пакет имеет атрибуты, связанные с пакетом. В таблице показан список пакетов и их атрибут. При щелчке по столбцу пакета отображается подробная HTML-таблица с деталями пакета и изображением на той же странице.
Я заметил, что sitecore хранит каждый идентификатор как GUID. Я не хочу передавать это на стороне клиента. Есть ли способ, которым мы можем иметь числовой идентификатор для каждого элемента в sitecore, чтобы я мог связать каждый пакет с деталями пакета и показать ли на стороне клиента jquery скрытие для каждого клика и т. Д.?
Благодарю.
1 ответ
Если мы можем предположить, что пакеты являются дочерними элементами плана праздника, тогда вы можете установить источник данных в своем списке пакетов следующим образом:
Sitecore.Context.Item.Children
Чтобы затем создать ссылки на детали каждого элемента пакета, вы можете сделать что-то вроде этого:
// ... in the itemdatabound event of the listview / repeater etc etc ...
var link = (Hyperlink)e.Item.FindControl("MyHyperlinkControl");
var currentItem = (Item)e.Item.DataItem;
link.NavigateUrl = LinkManager.GetItemUrl(currentItem);
// ... all the other binding related activity ...
Я думаю, что типичный способ загрузить это содержимое через Jquery - это использовать метод load(), используя URL-адрес гиперссылки, и указать привязку на целевой странице:
$('#result').load('holidays/package1 #PackageDetailsContainer');
Однако, если вы действительно хотите выбирать элементы по ключу, вы можете отфильтровать элементы Sitecore по любому из их свойств или полей с помощью linq. Например:
var selectedPackageKey = Request.QueryString["packageKey"];
var parentFolderId = "{xxxx.xxxxxxx.xxxxxxxx.xxxxxxxxx}";
var parentFolderItem = Sitecore.Context.Database.GetItem(parentFolderId);
var selectItem = parentFolderItem.Children.
Where(i => i["Key field"] == selectedPackageKey).
FirstOrDefault();