2017-10-30 9 views
0

パンくずリストは次のとおりです。パンくずリストの変更フィールド名

ウェブサイト>第1サイト>第2サイト。

は、私が「ウェブサイト」への「ホーム」に変更したい、これが私のコードです:

@if (!Umbraco.AssignedContentItem.DocumentTypeAlias.Equals("Home")) 
    { 
     <div class="breadcrumb" itemprop="breadcrumb"> 
      @foreach (var level in Model.Content.Ancestors().Where("Visible").OrderBy("Level")) 
      { 
       if (Umbraco.AssignedContentItem.DocumentTypeAlias.Equals("Website")) 
       { 
        <p>test</p><a class="breadcrumb" href="@level.Url">Home</a> 
       } 
       else 
       { 
        <a class="breadcrumb" href="@level.Url">@level.Name</a> 
       } 
       <span>&gt;</span> 
      } 
      @CurrentPage.Name 
     </div> 
    } 

最初.Equalsは、私のホームページのdocumentaliasは「ホームであるとしてブレッドクラムは、ホームページに隠されているを確認します"

2番目の.Equalは、「Website」を「Home」に変更する必要があります。 「ウェブサイト」も私のDocumentAliasです。

私はこれが動作しない理由を誰もが知っていUmbracoバージョン7.7.2

を使用していますか?

+0

あなたは「ホーム」にラベル「ウェブサイト」を変更しますか?その後、次のhtmlを変更する必要がありますHome Mark

答えて

1

Model.DocumentTypeAliasを使用して、現在のページのドキュメントタイプを確認することをお勧めします。

また、現在のドキュメントタイプエイリアスを確認するのではなく、現在のレベルを確認する方が簡単かもしれません。Model.Level == 1は、ルート(ホームページ)にいるかどうかを確認します。

if (Umbraco.AssignedContentItem.DocumentTypeAlias.Equals("Website"))を実行しているときは、現在のページのドキュメントタイプをテストしていて、foreach内の現在のアイテムをテストすると思います。試してみてください:

if (level.DocumentTypeAlias.Equals("Website")) 
{ 
    ... 

完全固定例:

@if (Model.Level != 1) 
{ 
    <div class="breadcrumb" itemprop="breadcrumb"> 
     @foreach (var level in Model.Content.Ancestors().Where("Visible").OrderBy("Level")) 
     { 
      if (level.DocumentTypeAlias.Equals("Website")) 
      { 
       <p>test</p><a class="breadcrumb" href="@level.Url">Home</a> 
      } 
      else 
      { 
       <a class="breadcrumb" href="@level.Url">@level.Name</a> 
      } 
      <span>&gt;</span> 
     } 
     @CurrentPage.Name 
    </div> 
} 

あなたのページがUmbraco.Web.Mvc.UmbracoTemplatePageではなくUmbraco.Web.Mvc.UmbracoViewPageから継承した場合、あなたはModel.Contentを書くことだけではなく、Modelは、現在のページのコンテンツにアクセスする必要がありますのでご注意ください。

+0

これはうまくいきました!ありがとうございました! @ifコードを元のコードに戻して、最初のページに表示しないようにしなければなりませんでした。残りは完璧に動作しています! – Mik3NL

0

私は遅れて相手にしていますが、チェックして、次の操作を行うことができ、すべてのそのロジックのdoctypeを使用しないように:

DOCTYPEで「タイトル」プロパティを作成します。これはコンポジションでも継承されたdoctypeでもかまいません。また、Model Builderの独自のベースモデルを作成することもできます。

は、このような拡張メソッドを作成します。

public static class Extensions 
{ 
    public static string TitleOrName(this IPublishedContent content) 
    { 
     if (content.HasValue("title")) return content.GetPropertyValue<string>("title"); 
     else return content.Name; 
    } 
} 

その後、あなたはこのようなあなたのブレッドクラムでそれを使用することができます。

@if (!Umbraco.AssignedContentItem.DocumentTypeAlias.Equals("Home")) 
    { 
     <div class="breadcrumb" itemprop="breadcrumb"> 
      @foreach (var level in Model.Content.Ancestors().Where("Visible").OrderBy("Level")) 
      { 

        <a class="breadcrumb" href="@level.Url">@level.TitleOrName()</a>      
       <span>&gt;</span> //I would include this using CSS 
      } 
      @CurrentPage.TitleOrName() 
     </div> 
    } 
関連する問題