パラメーター テンプレートに画像フィールドがある場合、C# で画像の URL を取得するにはどのような手順が必要ですか?
3 に答える
@mdresser は、レンダリング パラメータであるべきものとすべきでないものについて有効な指摘を行います。ただし、Sitecore がパラメーター テンプレートで画像フィールドを使用することを意図的に難しくしているとは思いません。彼らは、既存のキーと値のペアのレンダリング パラメーター機能にパラメーター テンプレート機能を単に構築しました。
レンダリング パラメーター テンプレートの画像フィールドの名前が の場合BackgroundImage
、次のコードを使用して、選択した画像の URL を取得できます。
var imageId = XmlUtil.GetAttribute("mediaid", XmlUtil.LoadXml(this.Parameters["BackgroundImage"]));
MediaItem imageItem = Sitecore.Context.Database.GetItem(imageId);
backgroundImageUrl = MediaManager.GetMediaUrl(imageItem);
Parameters プロパティを提供するサブレイアウトの基本クラスをまだ持っていない場合は、これも追加する必要があります。
private NameValueCollection parameters;
public virtual NameValueCollection Parameters
{
get
{
if (this.parameters == null)
{
var parameters = this.Attributes["sc_parameters"];
this.parameters = string.IsNullOrEmpty(parameters)
? new NameValueCollection()
: WebUtil.ParseUrlParameters(parameters);
}
return this.parameters;
}
}
これを実現するには、サイトコアの画像フィールドが未加工のテキスト値を img タグにレンダリングする方法を確認する必要があります。ただし、sitecore ではそのままでは機能しない理由があります。パラメータ テンプレートは、レンダリングまたはサブレイアウトのレンダリング方法に関する情報を定義するように設計されています。たとえば、特定の数のアイテムを表示するようにリスト コントロールに指示するために使用できます。コンテンツの編集が非常に面倒になるため、コンテンツのレンダリング パラメータを使用しないことをお勧めします。特定のサブレイアウトのコンテンツをページ自体以外の場所で定義することが目的の場合は、代わりにサブアイテムに入れます。