2013-05-10 8 views
5

Ho bisogno di aggiungere del markup personalizzato per il campo sc:Image per incantare SEO. Questa marcatura non è una proprietà del campo, in modo da codebehind, ho provato qualcosa di simile:Come si inserisce il markup personalizzato in un campo sc sitecore?

slideImage.Attributes.Add("ControlType", "C4Image"); 
slideImage.Attributes.Add("rel", relString); 

Ma questo non sta funzionando, e vedo nulla nel output di rendering. C'è un modo per fare questo?

risposta

3

È possibile creare i propri classe che eredita dalla Sitecore.Web.UI.WebControls.Image e ignorare in questo modo:

namespace My.Assembly.Namespace 
{ 
    public class MyImage : Sitecore.Web.UI.WebControls.Image 
    { 
     public virtual string RelAttribute { get; set; } 

     protected override void PopulateParameters(Sitecore.Collections.SafeDictionary<string> parameters) 
     { 
      base.PopulateParameters(parameters); 
      if (!String.IsNullOrEmpty(RelAttribute)) 
      { 
       parameters.Add("rel", RelAttribute); 
      } 
     } 
    } 
} 

e quindi registrare il namespace e utilizza la classe MyImage:

<%@ Register tagPrefix="my" namespace="My.Assembly.Namespace" assembly="My.Assembly" %> 

<my:MyImage runat="server" RelAttribute="reltest" Field="logo"/> 

È possibile utilizzare tutte le attributi standard da sc:Image allo my:MyImage. Il codice genera il tag img con rel <img rel="reltest" src="logo.jpg" ... />.

È possibile estendere facilmente il codice sopra per supportare anche l'attributo ControlType.

+0

+1 per il suggerimento. Ho trovato un modo più semplice (vedi la mia risposta) –

8

È necessario utilizzare la proprietà "Parametri" per impostare proprietà aggiuntive sia su che sul controllo.

possibile per così:

<sc:FieldRenderer ID="PageImage" runat="server" FieldName="ContentImage" Parameters="ControlType=C4Image&rel=relString" /> 
<sc:Image ID="SCPageImage" runat="server" Field="ContentImage" Parameters="ControlType=C4Image&rel=relString" /> 

che verranno resi in questo modo:

<img width="1232" height="637" controltype="C4Image" rel="relString" alt="" src="~/media/Images/DEMO backgrounds/background2.ashx"> 
+0

Tanti modi per fare una cosa in Sitecore :) –

+0

Ma, ho pensato che si desidera impostare le proprietà tramite C#? Qui stai installando staticamente. –

+1

Sì - ma puoi farlo anche da C# e impostando la proprietà .Parameters - PageImage.Parameters = "blah: –

-2

Per screnario di come questo, mi piacerebbe fosso il FieldRenderers e tornare a un tag html regolare con l'associazione all'URL dell'immagine. LinkManager è tuo amico qui.

Problemi correlati