在Sitecore页面编辑器中打开选择关联内容

时间:2014-11-05 21:45:04

标签: sitecore sitecore7 page-editor

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

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

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

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

由于

1 个答案:

答案 0 :(得分: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);
            }
        }
    }
}

干杯