0

我们的要求要求我们将页面模块存储在 Modules 文件夹中的页面项下。在模块的渲染中,我将数据源位置设置为 ./Modules。我的模块结构页面如下所示。

页 | --- 模块(文件夹) | --- 模块 1 --- 模块 2 --- 模块 3

当通过页面编辑器将模块添加到页面时,数据源位置是正常路径而不是其中的 ./,应出现选择关联内容框。数据源位置为“./”时不会出现。

有没有办法强制“选择相关内容”自动显示?我也不希望用户看到“组件属性”窗口。

谢谢

4

1 回答 1

0

确保您尝试的路径确实存在。当对话框没有出现是因为没有有效的数据源位置。

数据源位置字段接受路径或 Sitecore 查询。您还可以使用多个数据源将查询与管道分开。

这些都是 Ds 位置的有效值。

/sitecore/content/Components/Rich Text

./modules

./ancestor-or-self::*/child::*[@@templatename='Modules']

/sitecore/content/Components/Rich Text|./modules

同样为了改善您的谷歌搜索,这种带有可在页面编辑器中编辑的数据源的子布局称为组件

.

更新:

getRenderingDatasource管道中有这个处理器。

<processor type="Sitecore.Pipelines.GetRenderingDatasource.GetDatasourceLocation, Sitecore.Kernel" />

您可能想去那里并用可以调试的自定义类替换它,并检查 get item()。只有当程序到达该行时args.DatasourceRoots.Add(item);,它才会显示对话框。

这是原始 Sitecore 的课程。

using Sitecore.Data;
using Sitecore.Data.Items;
using Sitecore.Diagnostics;
using Sitecore.Text;
using System;
using System.Collections.Generic;

namespace Sitecore.Pipelines.GetRenderingDatasource
{
    /// <summary>
    /// Defines the datasource location root item
    /// </summary>
    public class GetDatasourceLocation
    {
        public GetDatasourceLocation()
        {
        }

        /// <summary>
        /// Runs the processor.
        /// </summary>
        /// <param name="args">The arguments.</param>
        public void Process(GetRenderingDatasourceArgs args)
        {
            Assert.IsNotNull(args, "args");
            foreach (string str in new ListString(args.RenderingItem["Datasource Location"]))
            {
                string str1 = str;
                if (str.StartsWith("./", StringComparison.InvariantCulture) && !string.IsNullOrEmpty(args.ContextItemPath))
                {
                    str1 = string.Concat(args.ContextItemPath, str.Remove(0, 1));
                }
                Item item = args.ContentDatabase.GetItem(str1);
                if (item == null)
                {
                    continue;
                }
                args.DatasourceRoots.Add(item);
            }
        }
    }
}

干杯

于 2014-11-05T22:23:46.150 回答