2016-06-28 98 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

相關問題