저는 Sitefinty 뉴스 내용 섹션에 1 개의 뉴스 항목을 작성했습니다. 어떻게하면 Sitefinty의 News Author 이미지를 얻을 수 있습니까? 내 sitefinty 프로필에 그림을 업로드하고 1 개의 뉴스 항목을 만들었지 만 뉴스 세부 정보 페이지에 내 이미지를 표시 할 생각은 없습니다. Sitefinty 6.3을 사용하고 있습니다.Newsfinder의 뉴스 작성자의 미리보기 이미지를 표시합니다.
답변
뉴스 게시판을 만든 프로필을 찾는 뉴스 위젯 세부 정보 템플릿에서 참조하는 사용자 정의 컨트롤이어야합니다.
나는 ASCX 년에 단지 .NET의 이미지 컨트롤 파일, ~/CustomControls/AuthorPicture.ascx에 내 솔루션에서 사용자 지정 컨트롤을 가지고 : 뒤에 컨트롤의 코드에서
<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;
}
}
}
우리는 뉴스 항목 ID를 컨트롤의 NewsId Guid 속성을 통해 전달할 것입니다.
이 기능의 작동 방식을 표시하려면 Sitefinity에서 페이지를 작성하고 페이지에 뉴스 위젯을 추가하십시오. "편집"을 선택하고 "하나의 특정 뉴스 항목"을 선택하고 뉴스 항목을 선택하십시오. "단일 항목 설정"탭에서 세부 템플릿을 선택하고 기본 이름은 "전체 뉴스 항목"입니다. 의 RadListView ItemTemplate을 어딘가에 그런
<%@ Register TagPrefix="custom" TagName="AuthorImage" Src="~/CustomControls/AuthorPicture.ascx" %>
컨트롤을 사용하여 속성에 뉴스 아이디를 전달 : "선택한 템플릿을 편집"및 템플릿에 컨트롤을 등록 클릭
<custom:AuthorImage runat="server" ID="cstmAuthorImage" NewsId='<%# Eval("Id") %>' />
저장 변경하고 게시하면 새 컨트롤이 실행되어야하며 게시물을 만든 사람의 프로필 이미지를 가져와야합니다. 아마 뉴스 세부 사항에 대한 새 템플릿을 만들 것 http://www.sitefinity.com/developer-network/forums/developing-with-sitefinity-/retrieving-post-author-details-avatar-nickname-etc-in-blog-post-templates
:
는 여기 Sitefinity 포럼에서 비슷한 것을 발견했다. 여기에서 ItemDataBound 이벤트에 연결할 수 있습니다. 여기서 이벤트에 대한 이미지를 설정할 수 있습니다.작성자 필드는 Sitefinity User와 관계가 없으므로 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);
}
사용자와 당신이 벤의 코드에서 찾을 수있는 이미지를 검색하기위한 논리.
또 다른 방법은 UserPicker 필드를 표시하는 사용자 정의 필드를 작성하는 것입니다.이 필드를 사용하면 어떤 Sitefinity User를 뉴스 항목과 관련지를 선택할 때 완전히 유연하게 될 수 있습니다.