我对sitecore 很陌生。我正在构建一个假期计划页面,其中每个计划都有不同的套餐,每个套餐都有与套餐相关的属性。该表显示包列表及其属性。单击包列时,将在同一页面上显示详细的 html 表格,其中包含包详细信息和图片。
我注意到 sitecore 将每个 ID 存储为 GUID。我不想将此传递给客户端。有什么方法可以为sitecore中的每个项目设置数字ID,以便我可以将每个包与包详细信息相关联,并为每次点击等做jquery客户端显示隐藏?
谢谢。
如果我们可以假设包裹是假期计划的子项目,那么您可以将包裹列表的数据源设置为:
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 加载此内容的典型方法是使用超链接的 url 使用 load() 方法,并在目标页面上指定一个锚点:
$('#result').load('holidays/package1 #PackageDetailsContainer');
但是,如果您真的想通过键选择项目,您可以使用 linq 按任何属性或字段过滤 Sitecore 项目。例如:
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();