Sitecore:如何在“常规链接”字段中输入课程

Tip*_*ppu 3 sitecore sitecore7 sitecore7.2

General Link现场,内容作者将设置一些类。

我想改变类,而渲染,所以我用了反光镜和得到的代码Link.cs,并试图扩大PopulateParameters类似方法和长相this.CssStylethis.CssClass总是空白。有什么方法可以获取在该General Link字段中输入的class的值?

在此处输入图片说明

Mar*_*lak 5

将您的字段强制转换为LinkField类并使用Class属性:

LinkField field = Sitecore.Context.Item.Fields["Link"];
string cssClass = field.Class;
Run Code Online (Sandbox Code Playgroud)

**编辑:**

如果要更改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";
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

并在GetLinkFieldValue处理器之前注册它:

<processor type="My.Assembly.Namespace.UpdateLinkClass, My.Assembly" />
<processor type="Sitecore.Pipelines.RenderField.GetLinkFieldValue, Sitecore.Kernel" />
Run Code Online (Sandbox Code Playgroud)