【问题标题】:Sitecore Intranet Portal: How to change the default structuring of User profilesSitecore Intranet 门户:如何更改用户配置文件的默认结构
【发布时间】:2023-09-04 17:20:01
【问题描述】:

我正在使用 Sitecore Intranet 门户。用户配置文件保存在默认创建的文件夹中。例如。对于用户“Jonny Bravo”,会自动创建两个文件夹JJo,然后将用户配置文件保存在其中。

 `J -> Jo -> Jonny Bravo`

我想禁用此默认行为,而是想根据部门构建用户配置文件。例如。财务、采购、管理等。因此,Purchase 文件夹将包含在该部门工作的所有用户。

如果出现以下情况,请告诉我:

1.有没有可能?

2。有什么后果吗?

【问题讨论】:

  • 您使用哪个 SIP 版本?
  • 我使用的是 SIP 版本 4.0。
  • 请看下面的答案。我想这在 SIP 4.0 中是一样的。

标签: sitecore sitecore7.2 sitecore-intranet-portal


【解决方案1】:

在 Sitecore Intranet Portal 4.1.0 中,在 Intranet.Profiles.config 配置中,您可以定义自己的 UserProfileProvider,而不是使用 Sitecore.Intranet.Profiles.Providers.UserProfileProvider 类的默认值。

只需从该类继承并覆盖public virtual Item GetProfileFolder(string userName, bool createIfNotExist) 方法。

这个方法的默认实现是:

public virtual Item GetProfileFolder(string userName, bool createIfNotExist)
{
    userName = StringUtil.GetLastPart(userName, '\\', userName);
    Item item = this.settings.Database.GetItem(this.settings.UserProfilesFolder);
    int num = Math.Min(this.settings.UserProfilesTreeDepth, userName.Length);
    for (int i = 0; i < num; i++)
    {
        string firstLetters = this.GetFirstLetters(userName, i + 1);
        Item item2 = this.GetItem(item, firstLetters, TemplateIDs.Folder);
        if (item2 == null)
        {
            if (!createIfNotExist)
            {
                return item;
            }
            item = this.CreateFolder(item, firstLetters);
        }
        else
        {
            item = item2;
        }
    }
    return item;
}

我不知道更改默认文件夹结构有什么缺点。


编辑

您需要在此处将提供程序的类型更改为您的自定义提供程序:

<UserProfileProvider>
  <x:attribute name="type">Sitecore.Intranet.Profiles.Providers.UserProfileProvider, Sitecore.Intranet.Profiles</x:attribute>
  <param ref="profilesSettings"/>
</UserProfileProvider>

【讨论】:

  • 顺便问一下,您能否给我一个链接,您可以在其中获得您在答案中使用的代码。我也想看看其他方法。谢谢!!
最近更新 更多