2013-05-10 10 views
5

sc:Imageフィールドにカスタムマークアップを追加して、SEOを強化する必要があります。このマークアップは、フィールドのプロパティではありませんので、分離コードから、私はこのような何か試してみました:カスタムマークアップをsitecore scフィールドにどのように配置しますか?

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

をしかし、これは動作していない、と私は、レンダリング出力に何も表示されません。これを行う方法はありますか?

答えて

3

あなたはSitecore.Web.UI.WebControls.Imageから継承したクラスを所有して作成し、このようにそれを上書きすることができます。

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); 
      } 
     } 
    } 
} 

そして名前空間を登録しMyImageクラスを使用します。

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

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

あなたはすべて使用することができますの標準属性もmy:MyImageに記載されています。 imgタグはrel <img rel="reltest" src="logo.jpg" ... />で生成されます。

上記のコードを容易に拡張して、ControlType属性をサポートすることもできます。

+0

+1のための提案。 –

8

コントロールとコントロールの両方で追加のプロパティを設定するには、 "Parameters"プロパティを使用する必要があります。

あなたはこのようにそれをすることができます。

次のようにレンダリングされます
<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" /> 

:このように、私はFieldRenderersを捨てたいと通常のHTMLタグに戻すscrenario年代については

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

Sitecoreで1つのことを行う方法はたくさんあります:) –

+0

しかし、C#でプロパティを設定したいと思っていましたか?ここでは静的に設定しています。 –

+1

はい - しかし、あなたは#Parametersプロパティを設定するだけでなく、C#からも行うことができます - PageImage.Parameters = "blah: –

-2

(画像のURL)へのデータバインディングを使用します。 LinkManagerはあなたの友人です。

関連する問題