2016-04-21 4 views
1

ich ein benutzerdefiniertes Feld auf der Liste Widget in Sitefinity 8.1 hinzugefügt haben, ist es Typ ist Weitere interessante Datenbanken und es ist Datentyp ist Seiten. Der Feldname lautet LinkedPageUrl.Sitefinity Benutzerdefinierte Felder für die Liste Widgets und wie sie verwendet werden in MVC-Ansicht-Vorlagen

Funktioniert perfekt im Back-End, so dass ich eine Seite aus dem System auswählen und gegen dieses bestimmte Listenelement speichern kann.

Ich kann keinen Ort in der Sitefinity-Dokumentation finden, die erklärt, wie ich dieses Feld programmatisch in einer MVC-basierten List.SimpleList.cshtml Ansichtsvorlage verwenden würde, die ich anpasse.

Ich habe gesehen, dies in der Widget-Nachrichten verwendet wird, wo es ein zugehöriges Bild für jeden Artikel News:

<img src="@Html.Raw(item.Fields.RelatedImg.Fields.MediaUrl)" class="img-responsive" /> 

Aber ich nahe an das nicht, weil ich die geringste nicht habe Idee wo zu beginnen ... Was ist die Modellstruktur, Syntax, etc.

Mein Ziel ist es, jedes Listenelement in einen Anker gerendert zu ändern und der Anker sollte die URL dieses verwandten Datenfeldes für seine Href-Eigenschaft verwenden.

EDIT:
enter image description here

enter image description here

enter image description here

Antwort

2

Sie können in der Widget-Schablone so etwas tun:

@foreach (var item in Model.Items) 
{ 
    <h3 @Html.InlineEditingAttributes(Model.ProviderName, Model.ContentType.FullName, (Guid)item.Fields.Id) 
     @Html.InlineEditingFieldAttributes("Title", "ShortText")> 

     @item.Fields.Title 
    </h3> 
    <ul> 
     @foreach (var listItem in ((ListViewModel)item).ListItemViewModel.Items) 
     { 
      <li @Html.InlineEditingAttributes(Model.ProviderName, ((ListViewModel)item).ListItemViewModel.ContentType.FullName, (Guid)listItem.Fields.Id)> 
       <div @Html.InlineEditingFieldAttributes("Title", "ShortText")> 
        @listItem.Fields.Title 
       </div> 

       <div class="sfMultiRelatedItmsWrp"> 
        <h2 class="sfrelatedItmTitle">Related pages</h2> 

        @foreach (var link in listItem.Fields.LinkedPageUrl) 
        { 
         var node = PageManager.GetManager().GetPageNode(link.Fields.Id); 
         var url = PageExtesnsions.GetFullUrl(node); 

         <div>@link.Fields.Title - @url</div> 
        } 
       </div> 
      </li> 
     } 
    </ul> 
} 

Dieses gegeben, dass Sie tha ausgewählt t Mehrere Listen können pro Listenelement ausgewählt werden.

EDIT: Stellen Sie sicher, dass die folgende Namespaces

@model Telerik.Sitefinity.Frontend.Mvc.Models.ContentListViewModel 
@using Telerik.Sitefinity.Frontend.Lists.Mvc.Models; 
@using Telerik.Sitefinity.Frontend.Mvc.Helpers; 
@using Telerik.Sitefinity.Modules.Pages; 

EDIT2 enthalten: Wenn das benutzerdefinierte Feld dann sollte dies es ausgewählt wird für nur 1 Seite kann wie folgt aussehen:

<div class="@Model.CssClass"> 

@foreach (var item in Model.Items) 
{ 
    <h3 @Html.InlineEditingAttributes(Model.ProviderName, Model.ContentType.FullName, (Guid)item.Fields.Id) 
     @Html.InlineEditingFieldAttributes("Title", "ShortText")> 

     @item.Fields.Title 
    </h3> 
    <ul> 
     @foreach (var listItem in ((ListViewModel)item).ListItemViewModel.Items) 
     { 
      <li @Html.InlineEditingAttributes(Model.ProviderName, ((ListViewModel)item).ListItemViewModel.ContentType.FullName, (Guid)listItem.Fields.Id)> 
       <div @Html.InlineEditingFieldAttributes("Title", "ShortText")> 
        @listItem.Fields.Title 
       </div> 

       <div class="sfMultiRelatedItmsWrp"> 
        <h2 class="sfrelatedItmTitle">Related pages</h2> 

        @{ 
         var node = PageManager.GetManager().GetPageNode(listItem.Fields.LinkedPageUrl.Fields.Id); 
         var url = PageExtesnsions.GetFullUrl(node); 
        } 

        <div>@listItem.Fields.Title - @url</div> 
       </div> 
      </li> 
     } 
    </ul> 
} 

Ein guter Ausgangspunkt ist this article

+0

danke für die Antwort. Wie würdest du das ändern, wenn es nur eine einzelne Seite wäre? Wissen Sie auch, welche Dokumentation ich zu diesem Thema lesen kann, weil ich sie besser verstehen möchte. – Jacques

+0

die Antwort für eine Seite aktualisiert –

+0

Danke, das war eine große Hilfe! – Jacques

Verwandte Themen