Sitecore 中的分类多 select 下拉列表

Categorised multi-select dropdown list in Sitecore

作为一名 Umbraco 开发人员,我对 Sitecore 还很陌生,到目前为止,我一直很恼火,因为一些可以轻松地手动添加到 Umbraco 中的功能在 Sitecore 中似乎非常复杂且记录不足。

基本上,我有多个语言网站:

每个网站下面都有一组文章:

  • English

    • Article 1
    • Article 2
  • French

    • Article 3
    • Article 4

我想要实现的是 属性 在后端按国家分类并允许用户 select 来自不同语言站点的多篇文章。

因此,例如,我可以 select 第 1 条和第 3 条。理想情况下,select 控件看起来像这样,其中国家/地区为粗体,无法 select 类别以及下面的选项受制于标准的 multi-select 行为。

有人知道如何在 Sitecore 中实现这一点吗?或者,有没有人知道任何 Sitecore 市场插件可以让我实现这一点,因为到目前为止,网络上缺乏关于这方面的文档和文献。

任何帮助或指点将不胜感激。

您可以使用 TreeList 实现类似的功能。它看起来像一棵树,因此并不完全符合您的要求,但可以完成您需要的功能。可以使用 "source" 值调整 TreeList 以显示 Sitecore 树的一部分,使某些项目不可选择,等等。

可以找到很好的资源here

在您的情况下,对源查询使用 DatascourceExcludeTemplatesForSelection/IncludeTemplatesForSelection 选项。

我可以通过编码数据源帮助您完成大部分工作。如果您创建一个继承自 IDataSource 的 class,您可以根据需要调整它。我无法让你拒绝用户选择 bold 国家。

Here 是 John West 的一篇文章,下面的代码是我目前正在使用的代码。我在渲染中使用此代码 属性,因此您会看到许多对渲染的引用。但是您要查找的只是 return 一组项目。

然后在数据源中,指定单词 "code:" 后跟 class 名称“,”程序集名称。

code:Sitecore.Sharedsource.Data.FieldSources.CustomFieldDataSource,Sitecore.Sharedsource

public class GetStyles : IDataSource
{
    public Item[] ListQuery(Item item)
    {
        bool flag = !string.IsNullOrWhiteSpace(Context.RawUrl) && Context.RawUrl.Contains("hdl");
        if (flag)
        {
            string renderingId = FieldEditorOptions.Parse(new UrlString(Context.RawUrl)).Parameters["rendering"];

            if (!string.IsNullOrEmpty(renderingId))
            {
                ItemUri renderingItemUri = new ItemUri(renderingId);

                var containers = DependencyResolver.Current.GetService<IPresentationRepository>().GetStylesItem(renderingItemUri.ItemID, item);

                if (containers == null)
                    return new Item[0];

                return containers.Children.ToArray<Item>();
            }
        }

        var result = new Item[0];
        return result;
    }
}