2016-06-28 3 views
0

Я новичок в Umbraco, и я унаследовал сайт, который в основном просто собран из самой CMS. Мне нужно реализовать еще несколько динамических функций на существующем веб-сайте.Umbraco - Отображение всех сообщений на блоге определенного пользователя

Одна из проблем заключается в том, что у меня есть список сообщений в блогах на целевой странице. Ниже у них есть гиперссылки как для категории постов блогов, так и для ее автора. Если я нажму на имя категории, я могу передать идентификатор категории в строке запроса и отобразить все сообщения, относящиеся к этой категории. Мне нужно сделать то же самое для пользователя. Я могу передать идентификатор категории пользователя, но он отображает сообщение «Нет сообщений было найдено».

Я читал документы Umbraco, но ничего там не дал мне никаких подсказок относительно того, как я это выполнил. Я могу получить имя автора для отображения, когда я передаю идентификатор в querystring, но это насколько я понял.

if (String.IsNullOrEmpty(catID)) 
{ 
    <h1>@Umbraco.Field("onPageTitle", altFieldAlias: "pageName")</h1> 
} 
else 
{ 
    var catPage = Umbraco.TypedContent(Convert.ToInt32(catID)); 
    if (catPage.HasValue("categoryPageTitle")) 
    { 
     <h1>@catPage.GetProperty("categoryPageTitle").Value</h1> 
    } 
    else 
    { 
     <h1>@catPage.Name</h1> 
    } 
} 

Я уверен, что мои трудности связаны с недостаточным пониманием того, как работает Umbraco. Если бы кто-нибудь мог указать мне в правильном направлении, я был бы признателен.

+0

Можете ли вы показать нам структуру ваших узлов контента, чтобы мы могли видеть, где находятся ваши записи в блоге? (Printscreen раздела содержимого на вашем сервере umbraco) – Mivaweb

ответ

0

Обычно у вас есть структура контента, в которой у вас есть узел Blog, который содержит BlogItem детей.

Тогда вы можете создать Macro partial view в Developer section из umbraco под названием RenderBlogItemsOfCreator.

Частичный вид

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage 

@* 

    This snippet renders the blog items based on the creator 

*@ 

@{ 

    // Take the root blog node 
    var blogRoot = Umbraco.TypedContentAtRoot().DescendantsOrSelf("blogRootAlias").FirstOrDefault(); 

    // Get the user from the macro parameters 
    var creatorUserId = int.Parse(Model.MacroParameters["userId"].ToString()); 

    // Get all blog children from this user that are visible and sort them from new to old 
    var blogItems = blogRoot.Children.Where(x => x.CreatorId == creatorUserId && x.IsVisible()).OrderByDescending(y => y.CreateDate); 

    foreach(var item in blogItems) 
    { 

     <div>@item.Name</div> 

    } 

} 

Макро

Добавить параметр userId в макрос типа числовой.

целевой страницы

Вызов макроса с помощью:

Umbraco.RenderMacro("RenderBlogItemsOfCreator", new { userId = 1 }) 

Единственное, что вам нужно сделать, это заполнить эту USERID, взяв его из URL и пройти его до конца.

+0

Благодарим вас за ваши предложения. Я действительно занят чем-то другим, но я проведу их в понедельник и дам вам знать, что я нахожу. – MountainBiker

Смежные вопросы