Sitecore 覆盖sc:Image-alt-text

Sitecore 覆盖sc:Image-alt-text,sitecore,sitecore7,alt,Sitecore,Sitecore7,Alt,如何重写Sitecore控件,以便它从同一项目中的另一个字段读取alt文本 我想给你一个标签 它应该首先查看这个字段,如果为空,它应该像通常一样呈现媒体项Alt文本 我不需要详细的实施说明。我只需要知道必须覆盖哪些类和函数。您可以创建自己的类,继承自Sitecore.Web.UI.WebControls.Image,并像这样覆盖它: namespace My.Assembly.namespace { 公共类MyImage:Sitecore.Web.UI.WebControls.Image {

如何重写Sitecore
控件,以便它从同一项目中的另一个字段读取alt文本

我想给你一个标签


它应该首先查看这个字段,如果为空,它应该像通常一样呈现
媒体项Alt
文本


我不需要详细的实施说明。我只需要知道必须覆盖哪些类和函数。

您可以创建自己的类,继承自
Sitecore.Web.UI.WebControls.Image
,并像这样覆盖它:

namespace My.Assembly.namespace
{
公共类MyImage:Sitecore.Web.UI.WebControls.Image
{
公共虚拟字符串ContentAltText{get;set;}
受保护的覆盖无效PopulateParameters(Sitecore.Collections.SafeDictionary参数)
{
基本参数(参数);
如果(!String.IsNullOrEmpty(项[ContentAltText]))
{
添加(“alt”,项[ContentAltText]);
}
}
}
}
可能不需要调用
参数。添加
您将需要替换原始的
alt
值。我还没有测试代码,所以正如您所要求的,它应该只为您指出正确的方向


编辑:下面的代码将无法使用
ContentAltText
作为字段名而不是不同的alt文本

还有另一种方法,但我不知道这是否会覆盖默认的
alt
值,或者这只适用于新属性:



编辑2

要注册控件,请在
web.config
中找到下面的部分,并使用自定义前缀添加命名空间:


...
您可能需要重新启动Visual Studio,以确保它能够识别新的命名空间

然后使用:


您可以创建自己的类,继承自
Sitecore.Web.UI.WebControls.Image
,并按如下方式覆盖它:

namespace My.Assembly.namespace
{
公共类MyImage:Sitecore.Web.UI.WebControls.Image
{
公共虚拟字符串ContentAltText{get;set;}
受保护的覆盖无效PopulateParameters(Sitecore.Collections.SafeDictionary参数)
{
基本参数(参数);
如果(!String.IsNullOrEmpty(项[ContentAltText]))
{
添加(“alt”,项[ContentAltText]);
}
}
}
}
可能不需要调用
参数。添加
您将需要替换原始的
alt
值。我还没有测试代码,所以正如您所要求的,它应该只为您指出正确的方向


编辑:下面的代码将无法使用
ContentAltText
作为字段名而不是不同的alt文本

还有另一种方法,但我不知道这是否会覆盖默认的
alt
值,或者这只适用于新属性:



编辑2

要注册控件,请在
web.config
中找到下面的部分,并使用自定义前缀添加命名空间:


...
您可能需要重新启动Visual Studio,以确保它能够识别新的命名空间

然后使用:



ContentAltText不是alt文本的值,而是找到alt文本值的同一项中的字段名称。因此,我需要访问此项的另一个字段,请参见编辑后的答案。使用
项[ContentAltText]
获取字段的值。您还可以简短地告诉我应该修改哪些配置来注册此新用户控件吗?例如,as ContentAltText不是alt文本的值,而是找到alt文本值的同一项中的字段名称。因此,我需要访问此项的另一个字段,请参见编辑后的答案。使用
项[ContentAltText]
获取字段的值。您还可以简短地告诉我应该修改哪些配置来注册此新用户控件吗?例如