Bat*_*atu 3 sitecore content-editor
让我们说用户自己能够添加新的分支模板.
在主页项目上,插入选项必须包含该分支模板文件夹中的项目.
在sitecore中,插入选项只能设置为特定项目.当我选择一个文件夹作为插入选项时,sitecore显示该文件夹项(这是完全正常的).
我需要做一些事情,比如在特定文件夹中动态显示项目,或者设置插入选项浏览对话框的起始路径.
这有可能吗?
博客文章:https://sitecorealekseyshevchenko.com/2017/09/19/dynamic-insert-options/
创建" 动态插入选项 "模板,其中包含唯一字段" 起始路径 "类型的" Droptree ",源值为" {3C1715FE-6A13-4FCF-845F-DE308BA9741D} " - " / sitecore/templates "项的ID .
然后将" 动态插入选项 "模板添加到模板的" 基本模板 "字段中的模板列表中,该模板应具有动态插入选项.
用这样的配置修补' uiGetMasters '处理器:
<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<processors>
<uiGetMasters>
<processor mode="on"
type="DynamicInsertOption.Processors.GetDynamicInsertOption, DynamicInsertOption"
patch:before="processor[@type='Sitecore.Pipelines.GetMasters.CheckSecurity, Sitecore.Kernel']" />
</uiGetMasters>
</processors>
</sitecore>
</configuration>
Run Code Online (Sandbox Code Playgroud)
实现GetDynamicInsertOption处理器:
namespace DynamicInsertOption.Processors
{
using Sitecore.Data.Items;
using Sitecore.Diagnostics;
using Sitecore.Pipelines.GetMasters;
public class GetDynamicInsertOption
{
public void Process(GetMastersArgs args)
{
Assert.ArgumentNotNull(args, "args");
var startingPath = args.Item["Starting Path"];
if (!string.IsNullOrEmpty(startingPath))
{
for (int i = args.Masters.Count - 1; i > -1; i--) { args.Masters.RemoveAt(i); }
var startingFolder = args.Item.Database.GetItem(startingPath);
foreach (Item master in startingFolder.Children) { args.Masters.Add(master); }
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
结果如下图所示:
归档时间: |
|
查看次数: |
430 次 |
最近记录: |