Sitecore - 如何在特定文件夹下显示模板,在插入选项上下文菜单中

时间:2017-09-19 06:59:04

标签: sitecore content-editor

让我们说用户自己可以添加新的分支模板。

在主页项目上,插入选项必须包含该分支模板文件夹中的项目。

在sitecore中,插入选项只能设置为特定项目。当我选择一个文件夹作为插入选项时,sitecore会显示该文件夹项(这是完全正常的)。

我需要做一些事情,比如在特定文件夹中动态显示项目,或者设置插入选项浏览对话框的起始路径。

这有可能吗?

2 个答案:

答案 0 :(得分:5)

博文:https://sitecorealekseyshevchenko.com/2017/09/19/dynamic-insert-options/

创建' 动态插入选项'模板包含唯一的字段' 起始路径'类型' Droptree '和来源值是' {3C1715FE-6A13-4FCF-845F-DE308BA9741D} ' - id' / sitecore / templates '项目

然后添加' 动态插入选项'模板列表中的模板' 基本模板'应该具有动态插入选项的模板字段。

enter image description here

Patch' 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>

实施 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); }
            }
        }
    }
}

结果见下图:

enter image description here

答案 1 :(得分:0)

您可以使用Sitecore Insert Options Rules代替Sitecore Insert Options

查找/sitecore/system/Settings/Rules/Insert Options/Rules项并使用Insert Options Rule模板在该节点下创建新项。现在编辑规则并将其设置为:

where the item is the Home item or one of its descendants
    and where the parent template is Folder
add YOUR_TEMPLATE insert option

您可以使用许多其他条件,如果您需要,规则可能会复杂得多。

您可以在此处阅读更多内容:Sitecore Insert Options Rules