В Umbraco есть куча зарезервированных свойств, которые вы можете добавить к документам, чтобы получить некоторые скрытые функции. Одним из них является umbracoInternalRedirectId
, который позволяет вам выполнять внутреннее перенаправление и отображать другой узел вместо запрашиваемого узла.
Вы можете узнать больше о некоторых других зарезервированных ресурсах здесь.
Если вы используете внутреннее перенаправление, ваш запрос будет внутренне перенаправлен на другой идентификатор узла, а затем все будет отображаться так, как если бы вы изначально запросили этот другой узел (однако вы не увидите перенаправление браузера, и оно не будет отражено в URL либо).
Что такое (что они делают):
IsInternalRedirectPublishedContent?
Это будет верно, если контент, на который вы перенаправляете, в настоящее время опубликован. False, если содержимое не опубликовано.
Начальный опубликованный контент ?
Это будет элемент контента, на который вы изначально нажимаете (до того, как произойдет перенаправление).
Опубликованный контент ?
Это будет элемент контента, на который вы будете перенаправлены (это будет то же самое, что и текущий элемент контента, который вы упомянули выше).
НО зачем они это делают?
То, что сделано выше, заключается в том, чтобы попытаться всегда получить ссылку на начальный контент до того, как произойдет какое-либо внутреннее перенаправление в случае перенаправления, и просто получить текущий элемент контента, если внутреннее перенаправление не происходит.
Однако на самом деле это не имеет смысла, учитывая, что в случае, если IsInternalRedirectPublishedContent
возвращает false, InitialPublishedContent
будет таким же, как PublishedContent
.
Вы получите тот же результат, что и выше, просто выполнив:
var content = UmbracoContext.PublishedContentRequest.InitialPublishedContent;
Однако, возможно, так было не всегда, и этот фрагмент кода должен был обойти ошибку в более старой версии Umbraco.
Так что я бы сказал, если у вас нет очень странной настройки перенаправления на вашем сайте, не должно быть никаких причин для того, чтобы просто не использовать этот фрагмент кода вместо того, который вы разместили.
Чтобы полностью ответить на ваш вопрос:
В приведенном выше коде использование content
в вашем шаблоне будет ссылкой на страницу, на которой настроено перенаправление. Использование Model.Content
будет ссылкой на узел, на который вы внутренне перенаправлены.
person
Claus
schedule
16.01.2017