2013-05-10 73 views
5

我需要爲sc:Image字段添加一些自定義標記以增加SEO。這個標記是不是字段的屬性,所以從代碼隱藏,我想是這樣的:如何將自定義標記放入sitecore sc字段中?

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

但是這是不工作的,我什麼也看不到的渲染輸出。有沒有辦法做到這一點?

回答

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:Image也在my:MyImage上。 該代碼將生成img標籤,rel爲<img rel="reltest" src="logo.jpg" ... />

您可以輕鬆擴展上面的代碼以支持ControlType屬性。

+0

+1的建議。我找到了一個更簡單的方法(請參閱我的答案) – 2013-05-10 14:47:06

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" /> 

要呈現這樣的:

<img width="1232" height="637" controltype="C4Image" rel="relString" alt="" src="~/media/Images/DEMO backgrounds/background2.ashx"> 
+0

在Sitecore中執行一件事的很多方法:) – 2013-05-11 17:25:25

+0

但是,我認爲您要通過C#設置屬性?在這裏你正在靜態設置。 – 2013-05-11 17:25:58

+1

是的 - 但你可以從c#做到這一點,以及通過設置.Parameters屬性 - PageImage.Parameters =「等等: – 2013-05-11 19:30:40

-2

對於screnario是這樣的,我會溝FieldRenderers和恢復到常規的HTML標籤與數據綁定到(圖片的網址)。 LinkManager是你的朋友。

相關問題