我需要爲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