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

M.R*_*.R. 5 c# asp.net sitecore content-management-system sitecore6

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

slideImage.Attributes.Add("ControlType", "C4Image");
slideImage.Attributes.Add("rel", relString);
Run Code Online (Sandbox Code Playgroud)

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

M.R*_*.R. 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" />
Run Code Online (Sandbox Code Playgroud)

这将呈现如下:

<img width="1232" height="637" controltype="C4Image" rel="relString" alt="" src="~/media/Images/DEMO backgrounds/background2.ashx">
Run Code Online (Sandbox Code Playgroud)


Mar*_*lak 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);
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后注册命名空间并使用MyImage类:

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

<my:MyImage runat="server" RelAttribute="reltest" Field="logo"/>
Run Code Online (Sandbox Code Playgroud)

您也可以使用所有标准属性sc:Imagemy:MyImage该代码将生成img带有 rel 的标签<img rel="reltest" src="logo.jpg" ... />

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