【问题标题】:Sitecore: How to get the class entered in General Link fieldSitecore:如何在通用链接字段中输入课程
【发布时间】:2014-11-28 06:08:13
【问题描述】:

General Link字段内容作者会设置一些类。

我想在渲染时更改类,所以我使用反射器并获得了Link.cs 的代码并尝试扩展PopulateParameters 方法,看起来this.CssStylethis.CssClass 总是空白。有什么方法可以获取General Link字段中输入的class的值吗?

【问题讨论】:

  • 您可以使用后代选择器来更改样式,而不是更改类:.somethingelse .static { /*style me*/ }。如果你需要做一些页面范围的事情,那么将类附加到你的 body 标签。

标签: sitecore sitecore7 sitecore7.2


【解决方案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" />

【讨论】:

  • 谢谢。但我想在一个地方而不是在所有使用 Link 字段的地方进行此更改。
  • 您是否使用字段渲染器来显示通用字段的值?您使用哪个 Sitecore 版本?
  • 我正在使用 sc:Link 并且我正在使用 7.2
猜你喜欢
  • 1970-01-01
  • 2023-04-03
  • 2021-10-22
  • 1970-01-01
  • 2015-02-21
  • 2011-01-23
  • 1970-01-01
  • 2011-03-04
  • 1970-01-01
相关资源
最近更新 更多