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