在Sitecore中,使用上下文获取渲染.参数[“renderingId”]和GetItem

本文关键字:参数 renderingId GetItem Sitecore 获取 上下文 | 更新日期: 2023-09-27 17:59:52

我有多个渲染,我正在为每个渲染向自定义体验工具栏添加一个帮助按钮,该按钮将打开一个新窗口并跳转到帮助文件中的特定锚点。我希望锚点与渲染的名称相匹配,例如"容器"或"事件列表"。因此,我制作了一个自定义命令,并试图使用此方法获取渲染项,但由于某些原因,targetItem始终为null。我做错了什么?

public class Help : Command
{
    public override void Execute(CommandContext context)
    {
        Assert.ArgumentNotNull(context, "context");
        Assert.IsNotNull(context.Items, "context items are null");
        Assert.IsTrue(context.Items.Length > 0, "context items length is 0");
        StringBuilder data = new StringBuilder();
        var renderId = context.Parameters["renderingId"];
        if (Sitecore.Data.ID.IsID(renderId))
        {
            Sitecore.Data.Items.Item targetItem =
                Sitecore.Context.Database.GetItem(renderId);
            if (targetItem != null) //never gets the item for me to access it's properties
            {
                data.Append("Rendering Name: " + targetItem.ToString() + "'r'n");
                data.Append("Rendering Display name: " + targetItem.Name + "'r'n");
            }
        }
    }
}

在Sitecore中,使用上下文获取渲染.参数[“renderingId”]和GetItem

是的,无论何时在任何sitecore管理网站上进行任何操作,您都会得到一个核心数据库作为内容数据库,因此为了使您的工作正常进行,您必须首先将数据库设置为master,然后您可以使用getItem方法来检索Item及其呈现。

编码快乐!!