Sitecore: как ввести класс в поле «Общая ссылка»

В поле General Link автор контента задаст некоторый класс.

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

введите здесь описание изображения


person Tippu    schedule 25.11.2014    source источник
comment
Вместо изменения класса вы можете просто использовать селектор потомков для изменения стиля: .somethingelse .static { /*style me*/ }. Если вам нужно сделать что-то на всю страницу, прикрепите класс к тегу body.   -  person jammykam    schedule 28.11.2014


Ответы (1)


Приведите свое поле к классу LinkField и используйте свойство Class:

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

**РЕДАКТИРОВАТЬ: **

Если вы хотите изменить поведение 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" />
person Marek Musielak    schedule 25.11.2014
comment
Спасибо. Но я хочу сделать это изменение в одном месте, а не везде, где используется поле «Ссылка». - person Tippu; 26.11.2014
comment
Используете ли вы средство визуализации поля для отображения значения общего поля? Какую версию Sitecore вы используете? - person Marek Musielak; 26.11.2014
comment
Я использую sc:Link и использую 7.2 - person Tippu; 26.11.2014