2014-11-25 5 views
2

В полевом редакторе General Link задан некоторый класс.Sitecore: Как получить класс, введенный в поле «Общая ссылка»

Я хочу изменить класс во время рендеринга, поэтому я использовал отражатель и получил код Link.cs и пытаюсь распространить метод PopulateParameters и выглядит как this.CssStyle и this.CssClass всегда пустые. Есть ли способ получить значение класса, введенного в поле General Link?

enter image description here

+0

Вместо того чтобы изменять класс, вы могли бы просто использовать селектор потомков, чтобы изменить стиль: '.somethingelse .static {/ * стиль мне */} '. Если вам нужно сделать что-то на всю страницу, тогда прикрепите класс к тегу вашего тела. – jammykam

ответ

4

Cast ваше поле для LinkField класса и использовать Class свойство:

LinkField field = Sitecore.Context.Item.Fields["Link"]; 
string cssClass = field.Class; 

** EDIT: **

Если вы хотите изменить поведение Sitecore sc:link к измените класс css каждой ссылки, вам нужно добавить свой собственный процессор к конвейеру renderField:

public class UpdateLinkClass 
{ 
    public void Process(Sitecore.Pipelines.RenderField.RenderFieldArgs args) 
    { 
    if (args != null && (args.FieldTypeKey == "link" || args.FieldTypeKey == "general link")) 
    { 
     Sitecore.Data.Fields.LinkField linkField = args.Item.Fields[args.FieldName]; 
     if (!string.IsNullOrEmpty(linkField.Class)) 
     { 
     args.Parameters["class"] = linkField.Class + "-custom"; 
     } 
    } 
    } 
} 

и зарегистрировать его перед GetLinkFieldValue процессора:

<processor type="My.Assembly.Namespace.UpdateLinkClass, My.Assembly" /> 
<processor type="Sitecore.Pipelines.RenderField.GetLinkFieldValue, Sitecore.Kernel" /> 
+0

Спасибо. Но я хочу сделать это изменение в одном месте, а не везде, где используется поле Link. – Tippu

+0

Используете ли вы средство визуализации полей для отображения значения общего поля? Какую версию Sitecore вы используете? –

+0

Я использую sc: Link, и я использую 7.2 – Tippu