2012-02-06 31 views
5

Tôi có trường 'Liên kết chung' ở một trong các trang của tôi trong Sitecore. Trường này về cơ bản chỉ định liên kết của tệp video được sử dụng để phát video.Kiểm tra loại liên kết trong Sitecore

Bây giờ, những gì tôi đang cố gắng làm là, séc nếu loại của liên kết này, cho dù người dùng đã tải lên một liên kết như một liên kết nội bộ , phương tiện truyền thông hoặc một liên kết bên ngoài. Tôi cần thông tin này, tùy thuộc vào loại liên kết, tôi cần thực hiện một số hành động tương ứng.

Có cách nào để kiểm tra loại liên kết trong Sitecore không?

Trả lời

19

Trước tiên, bạn cần phải lấy trường khỏi mục của bạn.

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

Sau đó, bạn có thể kiểm tra các thuộc tính khác nhau của trường.

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

Các LinkType giá trị khác nhau là internal, external, media, anchor, mailto, và javascript

+0

Tuyệt vời! Cảm ơn bạn! – YashG99

11

Hãy để tôi một cái gì đó nhà nước bổ sung xin vui lòng. Trong trường hợp của bạn, bạn muốn có một số hành động bổ sung dựa trên linktype. Trong tài liệu sitecore, bạn có thể tìm thêm một số thông tin về điều này. Để giúp bạn thực hiện việc này, hãy xem mã bên dưới:

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; 

    } 

Bằng cách này, bạn có thể lấy một số phương pháp sẽ luôn trả về đúng url dựa trên loại liên kết. Chúc may mắn với điều đó!

Các vấn đề liên quan