2013-05-10 72 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"/> 

您可以使用所有的标准属性sc:Image也在my:MyImage上。 该代码将生成img标签,rel为<img rel="reltest" src="logo.jpg" ... />

您可以轻松扩展上面的代码以支持ControlType属性。

+0

+1的建议。我找到了一个更简单的方法(请参阅我的答案) – 2013-05-10 14:47:06

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" /> 

要呈现这样的:

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

在Sitecore中执行一件事的很多方法:) – 2013-05-11 17:25:25

+0

但是,我认为您要通过C#设置属性?在这里你正在静态设置。 – 2013-05-11 17:25:58

+1

是的 - 但你可以从c#做到这一点,以及通过设置.Parameters属性 - PageImage.Parameters =“等等: – 2013-05-11 19:30:40

-2

对于screnario是这样的,我会沟FieldRenderers和恢复到常规的HTML标签与数据绑定到(图片的网址)。 LinkManager是你的朋友。

相关问题