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 でページを作成し、そのページにニュース ウィジェットを追加します。[編集] をクリックして [特定のニュース アイテム] を選択し、ニュース アイテムを選択します。[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フォーラムで似たようなものを見つけました:投稿テンプレート

于 2014-02-25T16:09:24.693 に答える