0

我有一个场景,我有一个嵌套列表页面,它需要存在于我网站的不同位置。

问题是我希望在一个位置管理此列表页面,而不是在许多地方复制它,但我不想丢失 URL 结构。所以,我可能有

www.abc.com/infocomm/infrastructure/wired/that-listing-page www.abc.com/infrastructure/ipv6/that-listing-page

我尝试在内容存储中创建列表页面并使用通配符查询动态拉出子页面,但这有一些缺点:

  1. 使用富文本编辑器,内容作者无法创建指向列表页面项目的超链接,因为它们存在于内容商店中,并且他们必须对查询字符串进行硬编码以获取列表页面项目。例如,他们必须硬编码如下参数:

www.abc.com/infocomm/infrastructure/wired/that-listing-page/2012/article-1 _

  1. 由于#1,如果内容作者重命名列表页面下的项目或删除项目,将会出现许多断开的链接。
  2. 我们必须迁移现有内容,这意味着我们必须手动更新和硬编码新链接,这将导致第一个问题。
  3. 由于上述挑战,我们无法生成 Google 站点地图和 RSS 提要。

你们中的一些人可能以前经历过这种情况,我很想听听你们是如何实现的。我正在使用 Sitecore 6.5。

4

2 回答 2

1

看起来项目克隆正是您需要的。在此博客文章中阅读有关克隆的更多信息。

您应该能够在下创建www.abc.com/infocomm/infrastructure/wired/that-listing-page项目的克隆,www.abc.com/infrastructure/ipv6它将自动更新(以及它的后代)。

于 2012-10-07T13:32:23.540 回答
0

如果我理解正确,您想在此页面上显示来自不同内容节点的项目的链接。

我能想到的最简单的解决方案是为列表页面创建一个新模板,并在模板上设置树列表选择框字段,然后添加您想要从中获取后代的 /sitecore/content/Home/。

现在在代码中遍历选定的项目并将它们显示在列表页面上。当您获得项目时,您应该能够获得所选项目的所有字段值,并且可能会为您提供缩略图并使用以下代码生成链接

Sitecore.Data.Database 数据上下文 = Sitecore.Context.Database;

Sitecore.Data.Item listPageItem = Sitecore.Context.Item;

Sitecore.Data.Fields.MultilistField multiselectField = 
                  (MultlistField)home.Fields["[select list field name]"];

Items[] selectedItems = (multiselectField != null)? 
                             multiselectField.GetItems() : null;

int listCount = (selectedItems ==null)? 0 : selectedItems.Length;

for(int index=0; index < listCount; index++)
{

   Item item = selectedItems[index];


   //  Assuming you want to display thumbnail image as a link to the page
   string thumbnailUrl = item.Fields["[Thumbnail Image Path]"] 

   string imgTag = string.Format(@"<img src=""/{0}"" width=""[img width]"" 
                   alt=""{1}"" />", 
                   thumbnailUrl, 
                   item.Fields["[Title]"]);

   string url = Sitecore.Links.LinkManager.GetItemUrl(item); 

   string itemLink = string.Format(@"<a href=""{0}"">{1}</a>", url, imgTag); 

}


希望这有助于...

于 2012-10-08T04:32:54.477 回答