2012-02-06 17 views
5

私は私はSitecoreの私のページの1つに「General Link」のフィールドを持っています。このフィールドは、基本的にビデオの再生に使用されるビデオファイルのリンクを指定します。Sitecoreのリンクの種類を確認

は今、私は何をしようとしていることは、ユーザーが内部リンク、メディアや外部リンクとしてリンクをアップロードしたかどうか、このリンク、の種類かのチェックです。私はこの情報が必要です、リンクのタイプに応じて、私はそれに応じていくつかのアクションを実行する必要があります。

Sitecoreのリンクの種類を確認する方法はありますか?

答えて

19

最初にあなたの項目のフィールドをオフにする必要があります。

Sitecore.Data.Fields.LinkField field = Sitecore.Context.Item.Fields["FIELD_NAME"]; 

次に、フィールドのさまざまなプロパティを調べることができます。

bool isInternal = field.IsInternal; 
bool isMedia = field.IsMediaLink; 
string linkType = field.LinkType; 

様々なLinkType値はinternalexternalmediaanchormailto、およびjavascript

+0

恐ろしい!ありがとう! – YashG99

11

は私がしてください追加の何かを述べてみましょうです。あなたの場合、あなたはlinktypeに基づいていくつかの追加アクションが必要です。サイトマップのドキュメントには、これに関するさらに詳しい情報があります。あなたはいつもあなたのリンクタイプに基づいて正しいURLを返しますいくつかの方法のアップを取得することができます

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; 

    } 

この方法:この上にあなたを助けるためには、下のコードを参照してください。それと幸運!