2016-06-28 61 views
0

我是Umbraco的新手,我已经继承了一个主要由CMS本身组成的网站。我需要在现有网站中实现更多动态功能。Umbraco - 显示特定用户的所有博客文章

其中一个问题是我有一个登陆页面上的博客文章列表。在这些我下面有博客帖子的类别和作者的超链接。如果我点击类别名称,我可以在查询字符串中传递类别标识,它将列出与该类别相关的所有帖子。我需要为用户做同样的事情。我可以传递用户的类别ID,但会显示一条消息“没有找到帖子”。

我读过Umbraco文档,但没有真正给我提供任何线索,我该如何实现这一点。当我在查询字符串中传递id时,我可以获得作者的姓名显示,但这是我得到的。

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

您可以向我们展示您的内容节点的结构,以便我们可以看到您的博客文章的位置? (umbraco后端内容部分的打印屏幕) – Mivaweb

回答

0

通常情况下,您的内容结构中有一个Blog节点,其中包含BlogItem子节点。

然后,您可以在名为RenderBlogItemsOfCreator的umbraco的Developer section中创建Macro partial view

管窥

@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 }) 

你必须从URL把它做的是填补了这个帐户及通过它传递的唯一的事情。

+0

感谢您的建议。我忙于其他事情,但我会在星期一对他们进行测试,并让你知道我发现了什么。 – MountainBiker

相关问题