gpt4 book ai didi

c# - Sitecore 动态更改字段工具提示

转载 作者:太空狗 更新时间:2023-10-30 00:20:02 27 4
gpt4 key购买 nike

有没有办法在内容编辑器中动态更改项目的工具提示?它不一定是 toolip - 我只是想输出一个基于项目和字段旁边的字段的文本,以显示该字段的默认值。到目前为止,在流水线处理器中,无法设置任何字段属性——它们都是只读的。知道我如何才能在上面添加标签,或者类似的东西吗?

最佳答案

是的,可以做到,但它确实需要少量代码反射(reflect)来修改内容编辑器中各个字段的外观,因为目前没有可用于字段级别内容编辑器的 Sitecore 管道。

  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 的签名从virtual 更改为override。这将导致调用 args.EditorFormatter.RenderField 以运行新代码。
  4. 在 RenderLabel 中插入所需的工具提示逻辑:
    if (itemField.Description.Length > 0)
    {
    str4 = " title=\"" + itemField.Description + " (custom text)\"";
    }
    注意:您可以用您的新逻辑替换(自定义文本)。另请注意,您可能希望取消对 Description.Length 的检查,因为如果未填充 Description,这将阻止您的新工具提示出现。
  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><br/>
    <processor type="CustomizedEditor.ChangeToMyEditorFormatter, CustomizedEditor" /><br/>
    <processor type="Sitecore.Shell.Applications.ContentEditor.Pipelines.RenderContentEditor.RenderSkinedContentEditor, Sitecore.Client" /><br/>
    <processor type="Sitecore.Shell.Applications.ContentEditor.Pipelines.RenderContentEditor.RenderStandardContentEditor, Sitecore.Client" /><br/>
    </renderContentEditor><br/>

您的自定义工具提示现在将出现:
Customized tooltip

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

关于c# - Sitecore 动态更改字段工具提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14782002/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com