我需要为sc:Image
字段添加一些自定义标记以增加SEO。这个标记是不是字段的属性,所以从代码隐藏,我想是这样的:如何将自定义标记放入sitecore sc字段中?
slideImage.Attributes.Add("ControlType", "C4Image");
slideImage.Attributes.Add("rel", relString);
但是这是不工作的,我什么也看不到的渲染输出。有没有办法做到这一点?
我需要为sc:Image
字段添加一些自定义标记以增加SEO。这个标记是不是字段的属性,所以从代码隐藏,我想是这样的:如何将自定义标记放入sitecore sc字段中?
slideImage.Attributes.Add("ControlType", "C4Image");
slideImage.Attributes.Add("rel", relString);
但是这是不工作的,我什么也看不到的渲染输出。有没有办法做到这一点?
您可以创建自己的类从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
属性。
您需要使用“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">
在Sitecore中执行一件事的很多方法:) – 2013-05-11 17:25:25
但是,我认为您要通过C#设置属性?在这里你正在静态设置。 – 2013-05-11 17:25:58
是的 - 但你可以从c#做到这一点,以及通过设置.Parameters属性 - PageImage.Parameters =“等等: – 2013-05-11 19:30:40
对于screnario是这样的,我会沟FieldRenderers和恢复到常规的HTML标签与数据绑定到(图片的网址)。 LinkManager是你的朋友。
+1的建议。我找到了一个更简单的方法(请参阅我的答案) – 2013-05-10 14:47:06