2012-02-06 11 views
5

Tengo campo 'Enlace general' en una de mis páginas en Sitecore. Este campo básicamente especifica el enlace de un archivo de video que se usa para reproducir un video.Comprobación del tipo de un enlace en Sitecore

Ahora, lo que estoy tratando de hacer es, cheque si el tipo de este enlace, si el usuario ha subido un enlace como un enlace interno , los medios de comunicación o un enlace externo. Necesito esta información ya que, dependiendo del tipo de enlace, necesito realizar algunas acciones en consecuencia.

¿Hay alguna manera de comprobar el tipo de enlace en Sitecore?

Respuesta

19

Primero necesita obtener el campo de su artículo.

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

Luego, puede inspeccionar varias propiedades de su campo.

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

Los diversos valores son LinkTypeinternal, external, media, anchor, mailto y javascript

+0

¡Impresionante! ¡Gracias amigo! – YashG99

11

Permítanme decir algo adicional, por favor. En su caso, quiere tener alguna acción adicional basada en el tipo de enlace. En la documentación del sitio, puede encontrar más información sobre esto. Para ayudarle en esta ver el código debajo:

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; 

    } 

De esta manera se puede obtener algún método hasta que siempre le devuelva la URL correcta en función del tipo de enlace. ¡Suerte con ello!

Cuestiones relacionadas