2013-05-10 1 views
5

sc:Image 필드에 사용자 정의 마크 업을 추가하여 SEO를 강화해야합니다. 이 태그는 필드의 속성이 아닙니다, 그래서 코드 숨김에서,이 같은 시도 :sitecore sc 필드에 사용자 정의 마크 업을 넣는 방법은 무엇입니까?

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

을하지만이 작동하지 않습니다, 나는 렌더링 된 출력에 아무것도 볼 수 없습니다. 이 일을 할 수있는 방법이 있습니까? MyImage 클래스

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

을 그리고 네임 스페이스를 등록하고 사용합니다 :

답변

3

당신은 당신이 Sitecore.Web.UI.WebControls.Image에서 상속 클래스를 소유하고 같이 재정의 만들 수 있습니다

<%@ 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

및 매개 변수 모두에서 추가 속성을 설정하려면 "매개 변수"속성을 사용해야합니다.

이처럼에 수

다음과 같이 렌더링됩니다
<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에서 한 가지를 할 수있는 많은 방법 :) –

+0

하지만 C#을 통해 속성을 설정하려고한다고 생각 했습니까? 여기 너는 정적으로 세우고있다. –

+1

예 -하지만 당신은 C#뿐만 아니라 .Parameters 속성을 설정할 수 있습니다 - PageImage.Parameters = "blah : –

-2

(URL) 이미지에 데이터 바인딩. LinkManager는 귀하의 친구입니다.