2016-06-28 8 views
0

私はUmbracoを初めて使いました。ほとんどの場合、CMS自体からまとめられたWebサイトを継承しました。私は既存のウェブサイトにいくつかのよりダイナミックな機能を実装する必要があります。Umbraco - 特定のユーザーによるすべてのブログ投稿を表示

問題の1つは、リンク先ページにブログ投稿のリストがあることです。これらの下には、ブログ投稿のカテゴリとその著者の両方のハイパーリンクがあります。カテゴリ名をクリックすると、クエリ文字列にカテゴリIDを渡すことができ、そのカテゴリに関連するすべての投稿が一覧表示されます。私はユーザーのために同じことをする必要があります。ユーザーのカテゴリ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

あなたのブログ記事の位置を確認できるように、コンテンツノードの構造を表示できますか? (umbracのバックエンドのコンテンツセクションのPrintscreen) – Mivaweb

答えて

0

BlogノードにBlogItemの子が含まれているコンテンツ構造が通常あります。

次に、RenderBlogItemsOfCreatorと呼ばれるumbracoのDeveloper sectionMacro 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からそれを取ることによって、このuserIdを記入し、それを通過です。

+0

あなたの提案をありがとう。私は何か他のもので本当に忙しいですが、私は月曜日にそれらをテストし、私が見つけたものをあなたに知らせます。 – MountainBiker

関連する問題