2014-02-25 18 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用户,您将涉及新闻项目。