2016-05-04 8 views
1

私はこれを動作させることはできません。私はここでhow to use Linq to get a sitecore fieldを始めましたが、ストールしました。私は特定のページ/テンプレートを除外しようとしています。ここに私が持っているものは次のとおりです:テンプレートをsitecore内の検索から除外する

  var query = PredicateBuilder.True<SearchResultItem>(); 
      query = query.And(i => i.Paths.Contains(homeItem.ID)); 
      query = query.And(i => i.Content.Contains(searchTerm)); 
      query = query.And(i => i.TemplateName != "MenuFolder"); 
      query = query.And(i => i["Template"] != "/sitecore/templates/Common/Folder"); 

"/ sitecore/templates/Common/Folder"の最後のものは動作しません。私は、検索が実行されたときに、検索でフォルダが1つも出てこないことを確認したい。 Path、Paths、TemplateName、TemplateIDのバリエーションを使用しましたが、動作させることができません。次の操作を行うための

+0

あるよろしいですフィールドは「テンプレート」と呼ばれ、他にはありません。 – Gabbar

+0

フィールドはテンプレートと呼ばれておらず、「クイックインフォ」の下にある名前だけで、フォルダの場所は – Keith

+0

となります。この権利が得られたら、共通/フォルダテンプレートに基づいてすべてのフォルダを除外しますか?それから、最も簡単な方法はi.TemplateID!= Sitecore.TemplateIDs.Folderです。 Sitecoreには、IDを取得できるシステム項目のSitecore.IDsやSitecore.TemplateIDなどのクラスがあります。 – Gabbar

答えて

2

試してみてください。

var query = PredicateBuilder.True<SearchResultItem>(); 
query = query.And(i => i.Paths.Contains(homeItem.ID)); 
query = query.And(i => i.Content.Contains(searchTerm)); 
query = query.And(i => i.TemplateName != "MenuFolder"); 
query = query.And(i => i.TemplateId != Sitecore.TemplateIDs.Folder); 

Sitecore.TemplateIDs.Folderはパス/sitecore/templates/Common/FolderにフォルダのIDであり、そのIDが{A87A00B1-E6DB-45AB-8B54-636FEC3B5523}

おかげ

+0

うまくいった – Keith

関連する問題