Как создать общие страницы со списком в Sitecore 6.5
У меня есть сценарий, где у меня есть вложенная страница со списком, которая должна существовать в разных местах моего сайта.
Проблема в том, что я хочу, чтобы эта страница листинга управлялась в одном месте вместо того, чтобы копировать ее во многих местах, и все же я не хочу терять структуру URL. Итак, я мог бы иметь
www.abc.com/infocomm/infrastructure/wired/that-listing-page www.abc.com/infrastructure/ipv6/that-listing-page
Я пытался создать страницу со списком в хранилище контента и использовать подстановочный запрос для динамического извлечения дочерних страниц, но у этого есть несколько недостатков:
- С помощью редактора форматированного текста автор контента не может создавать гиперссылки на элементы страницы листинга, поскольку они существуют в хранилище контента, и им нужно жестко закодировать строки запроса, чтобы получить элемент страницы листинга. Например, они должны жестко закодировать параметры, как показано ниже:
www.abc.com/infocomm/infrastructure/wired/that-listing-page/2012 / article-1
- Из-за #1 будет много неработающих ссылок, если автор контента переименует элементы на странице списка или удалит элементы.
- Мы должны перенести существующее содержимое, а это значит, что мы должны вручную обновить и жестко закодировать новые ссылки, что приведет к первой проблеме.
- Мы не можем создать карту сайта 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); }
Надеюсь, это поможет...