Sitecoreのページの1つに「 GeneralLink 」フィールドがあります。このフィールドは基本的に、ビデオの再生に使用されるビデオファイルのリンクを指定します。
今、私がやろうとしているのは、このリンクのタイプ、ユーザーがリンクを内部リンク、メディア、または外部リンクとしてアップロードしたかどうかを確認することです。リンクの種類に応じて、それに応じていくつかのアクションを実行する必要があるため、この情報が必要です。
Sitecoreでリンクのタイプを確認する方法はありますか?
Sitecoreのページの1つに「 GeneralLink 」フィールドがあります。このフィールドは基本的に、ビデオの再生に使用されるビデオファイルのリンクを指定します。
今、私がやろうとしているのは、このリンクのタイプ、ユーザーがリンクを内部リンク、メディア、または外部リンクとしてアップロードしたかどうかを確認することです。リンクの種類に応じて、それに応じていくつかのアクションを実行する必要があるため、この情報が必要です。
Sitecoreでリンクのタイプを確認する方法はありますか?
まず、アイテムからフィールドを削除する必要があります。
Sitecore.Data.Fields.LinkField field = Sitecore.Context.Item.Fields["FIELD_NAME"];
次に、フィールドのさまざまなプロパティを検査できます。
bool isInternal = field.IsInternal;
bool isMedia = field.IsMediaLink;
string linkType = field.LinkType;
さまざまなLinkType
値はinternal
、、、、、、、およびexternal
_media
anchor
mailto
javascript
追加のことを述べさせてください。あなたの場合、リンクタイプに基づいていくつかの追加のアクションが必要です。サイトコアのドキュメントで、これに関する詳細情報を見つけることができます。これを支援するために、以下のコードを参照してください。
public static string GetUrl(this Sitecore.Data.Fields.LinkField LinkField) {
string url = "";
switch (LinkField.LinkType) {
case "internal":
case "external":
case "mailto":
case "anchor":
case "javascript":
url = LinkField.Url;
break;
case "media":
MediaItem media = new MediaItem(LinkField.TargetItem);
url = Sitecore.StringUtil.EnsurePrefix('/', MediaManager.GetMediaUrl(media));
break;
case "":
default:
break;
}
return url;
}
このようにして、リンクタイプに基づいて常に正しいURLを返すメソッドを取得できます。それで頑張ってください!