이것은 뉴스 게시물을 생성 한 프로필을 조회하는 뉴스 위젯 세부 사항 템플릿에서 참조되는 사용자 컨트롤이어야합니다.
~ / 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에서 페이지를 만들고 페이지에 뉴스 위젯을 추가하십시오. "편집"을 클릭하고 "특정 뉴스 항목 하나"를 선택하고 뉴스 항목을 선택합니다. "단일 항목 설정"탭에서 세부 정보 템플릿을 선택합니다. 기본 이름은 "전체 뉴스 항목"입니다. "선택한 템플릿 편집"을 클릭하고 템플릿에 컨트롤을 등록합니다.
<%@ 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- 포스트 템플릿
-------------------뉴스 세부 사항에 대한 새 템플릿을 만들 것입니다. 여기에서 뉴스 항목의 이미지를 설정할 수있는 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/22019782