Sitecore覆盖内容树

时间:2014-10-22 16:25:51

标签: events treeview sitecore pipeline sitecore7.2

似乎无法在任何地方找到这个在线发布 - 请原谅我!

我正在寻找可以覆盖CMS中主要内容树的事件/管道。我需要根据用户角色隐藏/禁用树中的项目,这样他们就无法选择或查看它们。

谢谢! 丹

2 个答案:

答案 0 :(得分:4)

您应该使用它的访问权限。它符合您的需求。

您基本上需要选择限制访问所需的项目,然后进入安全>分配。 中断对Everyone的继承,然后为要允许的特定角色设置Allow Read。这将隐藏树中不属于指定角色的用户的项目。

答案 1 :(得分:3)

是的,在某些情况下,访问过滤可能不是一个非常好的解决方案,因此您应该使用自定义DataView。覆盖默认的Sitecore.Web.UI.HtmlControls.MasterDataView类并覆盖GetChildItems,如下所示:

protected override void GetChildItems (ItemCollection children, Item parent)
{
    base.GetChildItems(children, parent);
    YourFilteringMethod(children); // Let this method remove unwanted items
}

然后替换sitecore配置文件中的主数据视图,例如使用如下补丁文件:

<?xml version="1.0" encoding="utf-8" ?>
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/" xmlns:x="http://www.sitecore.net/xmlconfig/">
  <sitecore>
   <dataviews>
      <dataview name="Master">
        <patch:attribute name="assembly">YourAssembly</patch:attribute>
        <patch:attribute name="type">YourNamespace.MasterDataView</patch:attribute>
      </dataview>
    </dataviews>
  </sitecore>
</configuration>

这里有一篇关于它用于语言过滤的帖子(它还有一点点),但你可以实现它来进行适合你需要的访问过滤:

http://mikael.com/2014/10/sitecore-dataviews/

/ Mikael