Sitefinty ニュース コンテンツ セクションに 1 つのニュース アイテムを作成しました。Sitefinty でニュース作成者の画像を取得するにはどうすればよいですか。私は自分の写真を自分の sitefinty プロファイルにアップロードし、1 つのニュース アイテムを作成しましたが、ニュースの詳細ページに自分の画像を表示する方法がわかりません。Sitefinty 6.3 を使用しています。
2 に答える
これは、ニュース投稿を作成したプロファイルを検索するニュース ウィジェットの詳細テンプレートから参照されるユーザー コントロールである必要があります。
~/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 でページを作成し、そのページにニュース ウィジェットを追加します。[編集] をクリックして [特定のニュース アイテム] を選択し、ニュース アイテムを選択します。[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フォーラムで似たようなものを見つけました:投稿テンプレート