如何将自定义标记放在sitecore sc字段中?

时间:2013-05-10 03:55:32

标签: c# asp.net content-management-system sitecore sitecore6

我需要为sc:Image字段添加一些自定义标记以提高搜索引擎优化。这个标记不是该字段的属性,所以从代码隐藏,我尝试过这样的事情:

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

但这不起作用,我在渲染输出中看不到任何内容。有没有办法做到这一点?

3 个答案:

答案 0 :(得分: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" />

这将呈现如下:

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

答案 1 :(得分: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:Imagemy:MyImage的所有标准属性。 该代码将生成img标记,其中包含rel <img rel="reltest" src="logo.jpg" ... />

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

答案 2 :(得分:-2)

对于像这样的screnario,我放弃FieldRenderers并恢复到一个常规的html标记,并将数据绑定到(图像的url)。 LinkManager是你的朋友。