Как создать общие страницы со списком в Sitecore 6.5

У меня есть сценарий, где у меня есть вложенная страница со списком, которая должна существовать в разных местах моего сайта.

Проблема в том, что я хочу, чтобы эта страница листинга управлялась в одном месте вместо того, чтобы копировать ее во многих местах, и все же я не хочу терять структуру 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.

2 ответа

Решение

Похоже, что клонирование предметов это именно то, что вам нужно здесь. Узнайте больше о клонировании в этом блоге.

Вы должны быть в состоянии создать клон www.abc.com/infocomm/infrastructure/wired/that-listing-page пункт под www.abc.com/infrastructure/ipv6 и он будет обновляться автоматически (как и его потомки).

Если я правильно понимаю, вы хотите отобразить ссылки для элементов из разных узлов содержимого на этой странице.

Самое простое решение, о котором я могу подумать, - это создать новый шаблон для страницы со списком и настроить поле выбора списка деревьев в шаблоне и добавить /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); 

}


Надеюсь, это поможет...

Другие вопросы по тегам