#umbraco
#umbraco
Вопрос:
Я знаю, что могу получить текущий узел с помощью ‘var top = Node.GetCurrent();’ но, похоже, я не могу найти, где я могу получить связанные свойства, в частности ‘umbracoNaviHide’. Я хотел бы знать, как получить доступ к тем же данным, которые доступны из XSLT в пользовательском элементе управления
Ответ №1:
Для получения свойств вам необходимо использовать метод getProperty().
var top = узел.GetCurrent(); начало.Получить свойство («umbracoNaviHide»).Значение;
Комментарии:
1. Спасибо, я во многом разобрался… Я (по какой-то причине) думал, что это свойство по умолчанию. После добавления getProperty вернул его, как и ожидалось.
Ответ №2:
В Umbraco 8 вам нужно будет сделать что-то вроде этого:
private List<NavigationListItem> GetChildNavigationList(IPublishedContent page)
{
List<NavigationListItem> listItems = null;
var childPages = page.Children.Where(i => i.IsPublished());
if (childPages != null amp;amp; childPages.Any() amp;amp; childPages.Count() > 0)
{
listItems = new List<NavigationListItem>();
foreach (var childPage in childPages)
{
int myTrueFalseFieldValue = 1;
if (childPage.HasProperty("umbracoNaviHide"))
{
Int32.TryParse(childPage.GetProperty("umbracoNaviHide").GetValue().ToString(), out myTrueFalseFieldValue);
//myTrueFalseFieldValue = 0 // hide the page
//myTrueFalseFieldValue = 1 // don't hide the page
string name = childPage.Name;
int test = myTrueFalseFieldValue;
}
if (myTrueFalseFieldValue == 1)
{
NavigationListItem listItem = new NavigationListItem(new NavigationLink(childPage.Url, childPage.Name));
listItem.Items = GetChildNavigationList(childPage);
listItems.Add(listItem);
}
}
}
return listItems;
}
Приведенный выше код гарантирует, что те страницы, для свойства umbraconavihide checkbox которых установлено значение true, не будут включены в список навигации.
Чтобы узнать, как создать пользовательское свойство: umbracoNaviHide, пожалуйста, найдите на YouTube «День11: скрыть страницы из навигации в Umbraco»