카테고리 없음

[썸네일] Sitefinty에서 뉴스 작성자의 썸네일 표시

행복을전해요 2021. 1. 23. 22:28

이것은 뉴스 게시물을 생성 한 프로필을 조회하는 뉴스 위젯 세부 사항 템플릿에서 참조되는 사용자 컨트롤이어야합니다.

~ / 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