我在Sitefinty新闻内容部分创建了1个新闻项目,.How我可以在Sitefinty中获得新闻作者的图像吗?我已经上传了我的照片在我的sitefinty个人资料中,并创建了一个新闻项目,但我不知道如何在新闻详细信息页面上显示我的图像.I正在使用Sitefinty 6.3。
发布于 2014-02-26 00:09:25
这将必须是从查找创建新闻帖子的配置文件的新闻小部件详细信息模板引用的用户控件。
我在~/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中创建一个页面,并在该页面上添加一个News小部件。单击“编辑”选择“一个特定的新闻项目”,然后选择您的新闻项目。在"Single Item Settings“选项卡下选择您的详细信息模板,默认名称为"Full News Item”。点击[编辑所选模板],在模板中注册您的控件:
<%@ Register TagPrefix="custom" TagName="AuthorImage" Src="~/CustomControls/AuthorPicture.ascx" %>然后在RadListView itemTemplate中的某处,使用该控件并将新闻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
发布于 2014-02-26 16:16:10
我可能会为News detail创建一个新的模板。在这里,您可以附加到ItemDataBound事件,在该事件中,您可以为新闻项设置图像。
Author字段与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用户与新闻项目相关联。
https://stackoverflow.com/questions/22010064
复制相似问题