Отношения между предметами сайта

Я тихий новичок в 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');

http://api.jquery.com/load/

Однако, если вы действительно хотите выбирать элементы по ключу, вы можете отфильтровать элементы 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();
Другие вопросы по тегам