Sitecore布局详细信息表单修改

Sitecore布局详细信息表单修改,sitecore,Sitecore,在sitecore布局详细信息对话框窗体上,我想显示数据源名称和渲染名称 如何实现这一点?这可以通过覆盖某些Sitecore XML控件并使用以下代码来实现: private void RenderRenderings(DeviceDefinition deviceDefinition, int selectedIndex, int index) { Assert.ArgumentNotNull(deviceDefinition, "deviceDefinition");

在sitecore布局详细信息对话框窗体上,我想显示数据源名称和渲染名称


如何实现这一点?

这可以通过覆盖某些Sitecore XML控件并使用以下代码来实现:

private void RenderRenderings(DeviceDefinition deviceDefinition, int selectedIndex, int index)
    {
        Assert.ArgumentNotNull(deviceDefinition, "deviceDefinition");
        ArrayList renderings = deviceDefinition.Renderings;
        if (renderings == null)
        {
            return;
        }
        foreach (RenderingDefinition renderingDefinition in renderings)
        {
            if (renderingDefinition.ItemID != null)
            {
                Item item = Client.ContentDatabase.GetItem(renderingDefinition.ItemID);
                XmlControl xmlControl = Resource.GetWebControl("DeviceRendering") as XmlControl;
                Assert.IsNotNull(xmlControl, typeof(XmlControl));
                System.Web.UI.HtmlControls.HtmlGenericControl htmlGenericControl = new System.Web.UI.HtmlControls.HtmlGenericControl("div");
                htmlGenericControl.Style.Add("padding", "0");
                htmlGenericControl.Style.Add("margin", "0");
                htmlGenericControl.Style.Add("border", "0");
                htmlGenericControl.Style.Add("position", "relative");
                htmlGenericControl.Controls.Add(xmlControl);
                string uniqueID = Control.GetUniqueID("R");
                this.Renderings.Controls.Add(htmlGenericControl);
                htmlGenericControl.ID = Control.GetUniqueID("C");
                xmlControl["Click"] = "OnRenderingClick(\"" + index + "\")";
                xmlControl["DblClick"] = "device:edit";
                if (index == selectedIndex)
                {
                    xmlControl["Background"] = "#D0EBF6";
                }
                this.Controls.Add(uniqueID);

                //Get DataSource item path
                var datasource = string.Empty;
                Sitecore.Data.Database master = Sitecore.Configuration.Factory.GetDatabase("master");
                if (!string.IsNullOrEmpty(renderingDefinition.Datasource))
                {
                    var dsItem = master.GetItem(renderingDefinition.Datasource);
                    if (dsItem != null)
                        datasource = dsItem.Paths.Path;
                }

                if (item != null)
                {
                    xmlControl["ID"] = uniqueID;
                    xmlControl["Icon"] = item.Appearance.Icon;
                    xmlControl["Header"] = item.DisplayName;
                    xmlControl["Placeholder"] = WebUtil.SafeEncode(renderingDefinition.Placeholder);
                    xmlControl["DataSource"] = datasource;
                }
                else
                {
                    xmlControl["ID"] = uniqueID;
                    xmlControl["Icon"] = "Applications/24x24/forbidden.png";
                    xmlControl["Header"] = "Unknown rendering";
                    xmlControl["Placeholder"] = string.Empty;
                    xmlControl["DataSource"] = string.Empty;
                }
                if (renderingDefinition.Rules != null && !renderingDefinition.Rules.IsEmpty)
                {
                    int num = renderingDefinition.Rules.Elements("rule").Count<XElement>();
                    if (num > 1)
                    {
                        System.Web.UI.HtmlControls.HtmlGenericControl htmlGenericControl2 = new System.Web.UI.HtmlControls.HtmlGenericControl("span");
                        if (num > 9)
                        {
                            htmlGenericControl2.Attributes["class"] = "scConditionContainer scLongConditionContainer";
                        }
                        else
                        {
                            htmlGenericControl2.Attributes["class"] = "scConditionContainer";
                        }
                        htmlGenericControl2.InnerText = num.ToString();
                        htmlGenericControl.Controls.Add(htmlGenericControl2);
                    }
                }
                RenderDeviceEditorRenderingPipeline.Run(renderingDefinition, xmlControl, htmlGenericControl);
                index++;
            }
        }
    }
private void renderrenderrenderings(DeviceDefinition DeviceDefinition,int-selectedIndex,int-index)
{
Assert.ArgumentNotNull(deviceDefinition,“deviceDefinition”);
ArrayList renderings=deviceDefinition.renderings;
如果(渲染==null)
{
返回;
}
foreach(渲染中的渲染定义RenderingDefinition)
{
if(renderingDefinition.ItemID!=null)
{
Item Item=Client.ContentDatabase.GetItem(renderingDefinition.ItemID);
XmlControl XmlControl=Resource.GetWebControl(“DeviceRendering”)作为XmlControl;
IsNotNull(xmlControl,typeof(xmlControl));
System.Web.UI.HtmlControls.HtmlGenericControl-HtmlGenericControl=new System.Web.UI.HtmlControls.HtmlGenericControl(“div”);
htmlGenericControl.Style.Add(“padding”,“0”);
htmlGenericControl.Style.Add(“margin”,“0”);
htmlGenericControl.Style.Add(“border”,“0”);
htmlGenericControl.Style.Add(“位置”、“相对”);
添加(xmlControl);
字符串uniqueID=Control.GetUniqueID(“R”);
this.Renderings.Controls.Add(htmlGenericControl);
htmlGenericControl.ID=Control.GetUniqueID(“C”);
xmlControl[“单击”]=“渲染时单击(\”“+index+”\”);
xmlControl[“DblClick”]=“设备:编辑”;
如果(索引==selectedIndex)
{
xmlControl[“后台”]=“#D0EBF6”;
}
this.Controls.Add(uniqueID);
//获取数据源项路径
var datasource=string.Empty;
Sitecore.Data.Database master=Sitecore.Configuration.Factory.GetDatabase(“master”);
如果(!string.IsNullOrEmpty(renderingDefinition.Datasource))
{
var dsItem=master.GetItem(renderingDefinition.Datasource);
if(dsItem!=null)
datasource=dsItem.Path.Path;
}
如果(项!=null)
{
xmlControl[“ID”]=uniqueID;
xmlControl[“Icon”]=item.Appearance.Icon;
xmlControl[“Header”]=item.DisplayName;
xmlControl[“Placeholder”]=WebUtil.SafeEncode(renderingDefinition.Placeholder);
xmlControl[“数据源”]=数据源;
}
其他的
{
xmlControl[“ID”]=uniqueID;
xmlControl[“Icon”]=“Applications/24x24/probled.png”;
xmlControl[“Header”]=“未知呈现”;
xmlControl[“占位符”]=string.Empty;
xmlControl[“DataSource”]=string.Empty;
}
if(renderingDefinition.Rules!=null&&!renderingDefinition.Rules.IsEmpty)
{
int num=renderingDefinition.Rules.Elements(“rule”).Count();
如果(num>1)
{
System.Web.UI.HtmlControls.HtmlGenericControl htmlGenericControl2=新的System.Web.UI.HtmlControls.HtmlGenericControl(“span”);
如果(数值>9)
{
htmlGenericControl2.Attributes[“class”]=“scConditionContainer scLongConditionContainer”;
}
其他的
{
htmlGenericControl2.Attributes[“class”]=“scConditionContainer”;
}
htmlGenericControl2.InnerText=num.ToString();
添加(htmlGenericControl2);
}
}
Run(renderDefinition、xmlControl、htmlGenericControl);
索引++;
}
}
}
下一步是更新以下文件: \网站\sitecore\shell\Override\Applications\Layouts\DeviceEditor.xml \网站\sitecore\shell\Override\Applications\Layouts\DeviceRendering.xml

您可以在以下博文中找到源代码:

此外,您还可以下载一个市场模块,该模块可执行以下操作:

当然可以。@Adriaan我更新了答案,希望更好。@Mohammad您能建议我需要修改哪个类和XML文件,以便在“设备编辑器”对话框之前打开的“布局详细信息”对话框上实现相同的功能。这对我很有帮助。在博客文章提供的链接中,您需要更新的两个文件有两个截图,而且具体的更新是高亮显示的。实际上,我所说的页面与设备编辑器不同。所需页面是:单击演示选项卡=>单击详细信息=>“布局详细信息”对话框打开。现在我想在这个“布局细节”对话框上实现上述功能。请提供帮助。要回答您的问题,LayoutDetails位于此处…\sitecore\shell\Applications\Content Manager\Dialogs\LayoutDetails