2014-02-25 61 views
0

我已經在Sitefinty新聞內容欄中創建了1條新聞。如何獲得新聞作者在Sitefinty中的圖片。我已將我的照片上傳到我的sitefinty個人資料中,並提供了1條新聞條目,但並不知道我在新聞詳細信息頁面上顯示了我的圖片。我正在使用Sitefinty 6.3。顯示縮略圖新聞作者在Sitefinty

回答

0

這必須是從新聞窗口小部件詳細信息模板引用的用戶控件,該模板查找創建新聞發佈的配置文件。

我有我的解決方案的自定義控制在〜/ CustomControls/AuthorPicture.ascx,在ASCX文件,它只是一個.NET圖像控制:

<asp:Image runat="server" ID="imgAuthor" /> 

在後面的代碼進行控制,使用這個:

  using System; 
      using System.Collections.Generic; 
      using System.Linq; 
      using System.Web; 
      using System.Web.UI; 
      using System.Web.UI.WebControls; 
      using Telerik.Sitefinity.Modules.Libraries; 
      using Telerik.Sitefinity.Modules.News; 
      using Telerik.Sitefinity.Security; 
      using Telerik.Sitefinity.Security.Model; 

      namespace SitefinityWebApp.CustomControls 
      { 
       public partial class AuthorPicture : System.Web.UI.UserControl 
       { 
        public Guid NewsId { get; set; } 

        protected void Page_Load(object sender, EventArgs e) 
        { 
         if (NewsId == Guid.Empty) return; 

         var newsManager = NewsManager.GetManager(); 

         var newsItem = newsManager.GetNewsItems().FirstOrDefault(n => n.Id == NewsId); 

         if (newsItem == null) return; 

         var userManager = UserManager.GetManager(); 
         var upManager = UserProfileManager.GetManager(); 

         var owner = userManager.GetUser(newsItem.Owner); 

         var profile = upManager.GetUserProfile<SitefinityProfile>(owner); 

         var lmanager = LibrariesManager.GetManager(); 
         var image = lmanager.GetImage(profile.Avatar.ChildItemId); 

         imgAuthor.ImageUrl = image.ThumbnailUrl; 
        } 
       } 
      } 

您可以看到我們將通過控件的NewsId Guid屬性傳遞新聞項ID。

要僅顯示這是如何工作的,請在Sitefinity中創建一個頁面,並在頁面上添加一個新聞窗口小部件。點擊「編輯」選擇「一個特定的新聞項目」並選擇您的新聞項目。在「單一項目設置」標籤下選擇您的詳細信息模板,默認名稱爲「完整新聞項目」。點擊「編輯所選模板」,並登記在模板的控制:在RadListView ItemTemplate中某處

<%@ Register TagPrefix="custom" TagName="AuthorImage" Src="~/CustomControls/AuthorPicture.ascx" %> 

然後,使用控制和消息ID傳遞到屬性:

<custom:AuthorImage runat="server" ID="cstmAuthorImage" NewsId='<%# Eval("Id") %>' /> 

保存更改併發布您的頁面,您的新控件應該運行,並且它應該提取創建該帖子的人的個人資料圖像。

我發現這裏Sitefinity論壇類似的東西:http://www.sitefinity.com/developer-network/forums/developing-with-sitefinity-/retrieving-post-author-details-avatar-nickname-etc-in-blog-post-templates

0

我可能會創建一個新聞細節一個新的模板。在這裏,您可以附加到ItemDataBound事件,您可以在其中設置新聞項目的圖像。

作者字段沒有關係到Sitefinity用戶,那麼你需要獲得創建該Newsitem用戶的ID。 (業主)

此代碼顯示瞭如何做到這一點:

protected void Repeater_ItemDataBound(object sender, Telerik.Web.UI.RadListViewItemEventArgs e) { 

     var data = ((RadListViewDataItem)e.Item).DataItem as NewsItem; 

     // Get the owner 
     var owner = userManager.GetUser(data .Owner); 
    } 

用於檢索用戶,您可以在距離Ben的代碼中找到了圖像的邏輯。

另一種方法是創建一個自定義字段,顯示了一個UserPicker字段,然後這將讓你完全靈活的選擇哪些Sitefinity用戶,您將涉及新聞項目。