我有一个自定义的sitecore按钮,它可以更改当前项目的模板,非常简单.
然而,作为其中的一部分,我还试图将旧布局的渲染转换为新布局,如果它是某种子布局类型的话ItemId
.但是ItemId
返回的值始终为null,我从中获取的唯一值RenderingDefinition
是UniqueId
.
我究竟做错了什么?
我曾将此博客文章作为指南.
代码
public class ConvertToNewTemplateCommand : Command
{
protected void Run(ClientPipelineArgs args)
{
if (!SheerResponse.CheckModified())
return;
Item item = Context.ContentDatabase.Items[args.Parameters["id"]];
if (args.IsPostBack)
{
if (args.Result == "yes")
{
//Get current layout details
var originalLayoutXml = item[FieldIDs.LayoutField];
//Get new template
TemplateItem hubTemplate = Context.ContentDatabase.GetTemplate("some guid...");
//Change template
item.ChangeTemplate(hubTemplate);
//Reset laytout
ResetLayout(item);
//Get reset layout
var newLayoutXml = item[FieldIDs.LayoutField];
//Add all the module containers to the new layout in …
Run Code Online (Sandbox Code Playgroud) 当我在页面编辑器中添加组件时选择渲染时,有人能告诉我如何添加预览图像吗?我还有一个默认的子布局图标.我有Sitecore的Nicam演示网站,有一些图片,但我无法找到我可以选择的地方.
我对子布局的数据源模板的更改有疑问.现在,有两个子布局:Sub1和Sub2,它们将Template1作为其数据源模板.直到我发现我需要为Sub1提供不同的数据源模板时,我已经创建了许多子布局Sub1和Sub2.
现在,Template2将替换Template1作为子布局Sub1的数据源模板.现在,我必须将使用sublayout创建的所有项目的模板更改为Sub1.
问题是我必须通过内容编辑器 - >配置 - >更改模板技术手动更改每个项目的模板,这非常麻烦.有没有其他方法可以立即更改所有这些项目的模板?