0
A
回答
0
這是適用通過重寫一些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++;
}
}
}
下一步是更新下列文件: \網站\ Sitecore的\殼\覆蓋\應用程序\佈局\ DeviceEditor.xml \網站\ Sitecore的\殼\覆蓋\應用程序\佈局\ DeviceRendering.xml
您可以在以下博客文章的源代碼:
http://baraamasri.blogspot.com/2017/03/custom-device-editor_21.html
此外,您還可以下載一個市場模塊,這是否: https://marketplace.sitecore.net/Modules/C/Custom_Device_Editor.aspx
相關問題
- 1. Sitecore演示詳細信息
- 2. 指定詳細信息表格信息
- 3. Sitecore ECM詳細信息報告
- 4. Sitecore標準值介紹詳細信息
- 5. Crystal Reports詳細信息詳細信息
- 6. Android主詳細信息詳細信息
- 7. 不完整的sitecore發佈(演示詳細信息丟失)
- 8. 獲取表格詳細信息
- 9. 保留表格字段詳細信息
- 10. 搜索用戶詳細信息表格
- 11. 發送主人詳細信息表格
- 12. 表空間詳細信息
- 13. 主詳細信息表
- 14. 如何修改詳細查看我的強類型的詳細信息
- 15. PushViewController詳細信息?
- 16. 詳細信息sql
- 17. UITableView詳細信息
- 18. IMAP_AirSeatMapService詳細信息
- 19. 示例主詳細信息視圖 - 詳細信息片段更改內容
- 20. 對模板標準值的佈局詳細信息的支持
- 21. NSIS在顯示詳細信息後隱藏詳細信息
- 22. Zend Framework 2:修改控制器中的layout.pthml的詳細信息
- 23. Prestashop修改產品名稱的詳細信息
- 24. 修改編輯賬戶詳細信息頁面
- 25. 修改iPhone應用程序商店的詳細信息
- 26. 搜索和修改用戶詳細信息
- 27. 如何在symfony2中用戶詳細信息創建/修改
- 28. 最後修改使用SVNkit的文件的詳細信息
- 29. Git pull後的詳細信息更改
- 30. Mysql更改列詳細信息
沒問題,就行了。 –
@Adriaan我更新了答案,希望這會更好。 –
@Mohammad您可以請您建議我需要修改哪些類和xml文件,以便在Device editor對話框之前打開的Layout Details對話框中實現相同的功能。這對我很有幫助 –