2015-10-15 68 views
0

如何覆盖Sitecore <sc:Image>控件,以便它从同一项目中的另一个字段读取替代文本?覆盖sc:图片替代文本

我希望能够给一个标签,

<sc:Image contextAltText="fieldName" ...> 

,它应该先了解一下这个领域,如果是空的,它应该呈现Media Item Alt文本,因为它一般不会。

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

回答

4

您可以创建自己的类从Sitecore.Web.UI.WebControls.Image继承和覆盖它是这样的:

也许不是调用parameters.Add您需要更换原来的alt值。我没有按照你的要求测试代码,它只应指向你正确的方向。


编辑:下面的代码将不会与ContentAltText是字段名称,而不是不同的替代文字工作。

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

<sc:Image runat="server" Field="Field Name" Parameters="alt=OverridenAltValue" /> 

编辑2

要注册您的控件,请在web.config的下面找到以下部分,并添加您的名称空间和您的自定义前缀:

<system.web> 
    <pages> 
    <controls> 
     <add tagPrefix="sc" namespace="Sitecore.Web.UI.WebControls" assembly="Sitecore.Kernel"/> 
     <add tagPrefix="msc" namespace="My.Assembly.Namespace" assembly="My.Assembly"/> 
     ... 
    </controls> 
    </pages> 
</system.web> 

您可能需要重新启动Visual Studio以确保它识别新的名称空间。

然后使用:

<msc:ImageWithAlt runat="server" ... /> 
+0

ContentAltText不是替代文字的价值,但该领域的在ALT文本值是可以找到相同的项目名称。所以我需要到达此项目的另一个字段 – EngelbertCoder

+0

请参阅已编辑的答案。使用Item [ContentAltText]来获取该字段的值。 –

+0

你能否也请告诉我,我应该修改哪些配置来注册这个新的用户控件?例如,如 EngelbertCoder