Sitecore更改字段工具提示动态

时间:2013-02-08 21:59:30

标签: c# asp.net content-management-system sitecore sitecore6

有没有办法在内容编辑器中动态更改项目的工具提示?它不一定是toolip - 我只是想输出一个基于字段旁边的项目和字段的文本,以显示该字段的默认值。到目前为止,在流水线处理器中,没有一个字段属性可以设置 - 它们都是只读的。知道我怎么可能只是标记它,或者那种性质的东西?

1 个答案:

答案 0 :(得分:10)

是的,它可以完成,但它确实需要少量的代码反射来修改内容编辑器中各个字段的外观,因为当前没有Sitecore管道可用于字段级别的内容编辑器。 / p>

  1. 创建一个继承自Sitecore.Shell.Applications.ContentEditor.EditorFormatter的类MyEditorFormatter。
  2. 使用像Reflector或DotPeek这样的工具,将原始EditorFormatter中两种方法的实现复制到新类中:
    public virtual void RenderField(System.Web.UI.Control parent, Editor.Field field, bool readOnly)
    {...}
    public void RenderLabel(System.Web.UI.Control parent, Editor.Field field, Item fieldType, bool readOnly)
    {...}
    注意: RenderLabel是写入字段级别的方法工具提示,但由于它不是虚拟的,因此覆盖其功能的唯一方法是覆盖调用它的RenderField。
  3. 将RenderField的签名从虚拟更改为覆盖。这将导致调用args.EditorFormatter.RenderField来运行新代码。
  4. 在RenderLabel中插入所需的工具提示逻辑:
    if (itemField.Description.Length > 0)
    {
      str4 = " title=\"" + itemField.Description + " (custom text)\"";
    }
    注意:您可以将(自定义文字)替换为新逻辑。另请注意,您可能希望删除Description.Length上的检查,因为如果未填充描述,这将阻止您的新工具提示出现。
  5. 创建一个管道处理器来替换Sitecore的EditorFormatter:

    using Sitecore.Shell.Applications.ContentEditor.Pipelines.RenderContentEditor;
    namespace CustomizedEditor
    {
      public class ChangeToMyEditorFormatter : RenderStandardContentEditor
      {
        public void Process(RenderContentEditorArgs args)
        {
            args.EditorFormatter = new MyEditorFormatter();
            args.EditorFormatter.Arguments = args;
        }
      }
    }
    
    填充EditorFormatter.Arguments是防止空对象异常所必需的。

  6. 将管道处理器添加到RenderContentEditor管道的开头:

    
    <renderContentEditor>
    <processor type="CustomizedEditor.ChangeToMyEditorFormatter, CustomizedEditor" />
    <processor type="Sitecore.Shell.Applications.ContentEditor.Pipelines.RenderContentEditor.RenderSkinedContentEditor, Sitecore.Client" />
    <processor type="Sitecore.Shell.Applications.ContentEditor.Pipelines.RenderContentEditor.RenderStandardContentEditor, Sitecore.Client" />
    </renderContentEditor>

  7. 现在会出现您的自定义工具提示:
    Customized tooltip

    更新:Mike Reynolds编写了一个非常好的article,展示了如何使用此方法向内容编辑器添加“此字段定义位置”功能。