2017-03-21 6 views
0

私はUmbraco v6.2.4で部分的なビューを使用しています。これは関連記事の一覧です。以下のスクリプトは完全に動作し、 "Refactored.Umbraco.MVCExtensions"を使用して記事の閲覧回数を引き出します。これまでのところとても良いですが、最も人気の高い記事、つまりビュー数に基づいて記事のリストを並べ替え/並べ替えたいと思います。しかし、ビュー数はUmbracoモデルの一部ではありませんので、これに基づいてリストを並べ替えたりソートする方法がわかりません。Umbraco Razor Orderbyカスタムプロパティ

@inherits Umbraco.Web.Mvc.UmbracoTemplatePage 

@using Refactored.UmbracoViewCounter @{

var articles = Model.Content.AncestorOrSelf(4).Children.Where(x => x.IsVisible()).OrderBy("articleCategory, articleDate desc"); 

int pagerank = 1; 
string elementId; 

<div> 
    <p class="h3">Most Popular</p> 

    @foreach (var item in articles.Take(6)) 
    { 
     elementId = "content_" + pagerank.ToString(); 
     <div class="items @elementId"> 
      <span class="pagerank">@pagerank</span> 
      <a href="@item.Url"> 
       <p>@(item.GetPropertyValue<string>("title"))</p>     
      </a> 
      <span class="views-counter"> @ViewCount.GetViewCount(item.Id, category: "articles", increment: false)</span> 
     </div> 
     pagerank = pagerank + 1; 
    } 

</div> 

}

+0

ビュー数をどのように保存したか教えてください。 –

+0

ビュー数はUmbracoデータベースに "dbo.refViewCount"というテーブルに格納されます。テーブルには、id、nodeId、count、lastViewed、およびcategoryが含まれています。 – user3429664

答えて

0

あなたは、ソート後、以下のようなものを両方のリストを組み合わせるとするのLINQを使用することができ、私は、あなたがビューカウントテーブル用petapocoを使用していると仮定I私はあなたのカスタムデータテーブルを持っていないので、コードをテストすることはできませんが、ここで正しい方向に移動することができます:

var db = ApplicationContext.DatabaseContext.Database; 
var sql = new Sql() 
    .Select("*") 
    .From<RefViewCount>(new SqlServerSyntaxProvider()); 

var refViewCountList = db.Query<RefViewCount>(sql); 

var articles = Model.Content.AncestorOrSelf(4).Children.Where(x => x.IsVisible()).Select(r => new {Item = r, ViewCount = refViewCountList.Where(v => v.nodeId == r.Id).Select(v => v.count).SingleOrDefault()}).OrderBy(r => r.ViewCount).ToList(); 
+0

ありがとう、私はこれを試みたが、次のエラーが表示されます:型または名前空間の名前 'RefViewCount'が見つかりませんでした(使用しているディレクティブまたはアセンブリ参照がありません) – user3429664

+0

ViewCountのPetapocoまたはエンティティフレームワークを使用しています表?私はあなたがRefViewCountと呼ばれるpetapocoモデルを持っていたと仮定しますが、ViewCountテーブルの実際のクラス名でなければなりません –

関連する問題