Установите макет главной страницы (то есть тот, который вы хотите перенаправить с) быть ASHX общий обработчик. Это означало бы, что код UI не задействован каким-либо образом.
Вы можете сделать это с гораздо меньшим количеством коды, пока следующие предположения верны: 1. Всех дочерних элементов являются информационными бюллетенями 2. Последним находится в верхней части (например, элементы сортируются по дате выпуска)
namespace YourSite
{
public class NewsletterHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
Item item = Sitecore.Context.Item.Children[0];
string url = Sitecore.Links.LinkManager.GetItemUrl(item);
context.Response.Redirect(url);
}
public bool IsReusable { get { return false; } }
}
}
Если вышеприведенные допущения ошибочны, поиск последних публикаций может быть не таким простым, как получение даты публикации, как описано Zooking. Возможно, но если вы исправите более старый информационный бюллетень и заново опубликуете, этот код может выйти из строя (я думаю?). Если все в порядке, не проблема, Zooking правильная, в противном случае вы можете захотеть дать каждому информационному бюллетеню определенное поле даты. В этом случае используйте код здесь, в вашем обработчике.
namespace YourSite
{
public class NewsletterHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
Item[] children = Sitecore.Context.Item.Axes.GetDescendants();
Item item = children.AsQueryable()
.Where(c => c.TemplateName.ToLower()
.Contains("newsletter"))
.OrderByDescending(c => DateTime.Parse(c["PublishDate"])).FirstOrDefault();
string url = Sitecore.Links.LinkManager.GetItemUrl(item);
context.Response.Redirect(url);
}
public bool IsReusable { get { return false; } }
}
}
Спасибо за предложение Zooking. Где именно я должен помещать этот код? В кодовом отставании суб-макета вместо перенаправления? Благодарю. –
В любом случае вы должны поместить код в код нижнего уровня, который используется в «первой» -странице. Затем вы можете выбрать либо перенаправить пользователя на элемент, возвращаемый кодом, либо просто показать элемент непосредственно в sublayout. Я не являюсь гуру поисковой системы, но я думаю, что вы получите лучшее ранжирование в поисковых системах, если вы сделаете переадресацию, поэтому конкретный бюллетень содержит только один URL. – Zooking