0

我在 Sitefinty 新闻内容部分创建了 1 个新闻项目。如何在 Sitefinty 中获取新闻作者的图像。我已经在我的 sitefinty 个人资料中上传了我的图片并创建了 1 个新闻项目,但我不知道我有没有在新闻详细信息页面上显示我的图片。我使用的是 Sitefinty 6.3。

4

2 回答 2

1

这必须是从新闻小部件详细信息模板中引用的用户控件,用于查找创建新闻帖子的配置文件。

我在 ~/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 中创建一个页面并在页面上添加一个新闻小部件。单击“编辑”选择“一个特定的新闻项目”并选择您的新闻项目。在“单个项目设置”选项卡下选择您的详细信息模板,默认名称为“完整新闻项目”。点击“Edit Selected Template”并在模板中注册你的控件:

<%@ 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-后模板

于 2014-02-25T16:09:24.693 回答
0

我可能会为新闻详细信息创建一个新模板。在这里,您可以附加到 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 用户。

于 2014-02-26T08:16:09.673 回答