5

我需要为该sc:Image字段添加一些自定义标记以增强 SEO。这个标记不是该字段的属性,所以从代码隐藏中,我尝试了这样的事情:

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

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

4

3 回答 3

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">
于 2013-05-10T14:47:25.203 回答
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属性。

于 2013-05-10T07:02:36.680 回答
-2

对于像这样的脚本,我会放弃 FieldRenderers 并恢复为常规的 html 标记,并将数据绑定到图像(的 url)。LinkManager 是您的朋友。

于 2013-05-12T21:12:41.930 回答