Sitecore.Links.LinkManager.GetItemUrl(item)
возвращает путь к исходному элементу, а не путь псевдонима. Если у вас есть специальная логика для определения псевдонимов, например, с помощью свойства Sitecore.Context.RawUrl
, вы можете столкнуться с проблемой кэширования вывода, которая может привести к отображению псевдонимной версии элемента управления при переходе к исходному элементу. .
Обновление: Я почти уверен, что вы столкнулись с проблемой кэширования вывода. Мне удалось воспроизвести это поведение, создав контрольный элемент управления, который отображает временную метку и RawUrl, и включив кэширование вывода для элемента управления в разделе «Сведения о презентации».
При первом отображении элемента управления, будь то элемент или псевдоним, выходные данные кэшируются, и эти кэшированные выходные данные отображаются при каждом просмотре элемента управления либо для исходного элемента, либо для псевдонима. Даже если вы включите «Vary By Data», эффект будет таким же, потому что «Vary By Data» управляется элементом источника данных, а не URL.
Чтобы исправить это поведение, вам нужно добавить кэшированное состояние в выходные данные свойства GetCachingId:
protected override string GetCachingID()
{
return this.GetType().Name + (IsAlias() ? "Alias": "Item");
}
private bool IsAlias()
{
return Sitecore.Context.Database.Aliases.Exists(Sitecore.Context.RawUrl);
}
Переход к этому ответу для логики IsAlias.