如何在Sitecore 6.5中创建共享列表页面

时间:2012-10-07 08:19:30

标签: sitecore sitecore6 sitecore-workflow

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

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

  

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

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

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

    www.abc.com/infocomm/infrastructure/wired/that-listing-page/的 2012 /物品-1

    1. 由于#1,如果内容作者重命名列表页面下的项目或删除项目,将会有很多损坏的链接。
    2. 我们必须迁移现有内容,这意味着我们必须手动更新和硬编码新链接,这将导致第一个问题。
    3. 由于上述挑战,我们无法生成Google站点地图和RSS Feed。
    4. 你们中的一些人之前可能已经经历过这种情况,我很想知道你们是如何实现这一目标的。我正在使用Sitecore 6.5。

2 个答案:

答案 0 :(得分:1)

看起来物品克隆正是您需要的。在此blog post中了解有关克隆的详情。

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

答案 1 :(得分:0)

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

我能想到的最简单的解决方案是在模板上创建一个用于列出页面和设置treelist选择框字段的新模板,并添加/ sitecore / content / Home /,以便从中获取后代。

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

 Sitecore.Data.Database dataContext = 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); 

}


希望这有帮助...