如何为经过身份验证的用户组禁用Plone 5工具栏?

如何为经过身份验证的用户组禁用Plone 5工具栏?,plone,plone-5.x,Plone,Plone 5.x,情况如下: 一个用户登录到我的Plone 5站点 工具栏将显示,但它们没有任何操作选项,因为它们位于经过身份验证的组中 他们只能通过身份验证访问几个区域。如何抑制某些用户组的工具栏?或者最好的方法是什么?最简单的方法是使用CSS。您可以提供隐藏工具栏的条件CSS: #plone-toolbar-container {display: none} 本文介绍了一种非常简单的方法: 请注意:工具栏还包含个人偏好部分,因此删除它也会隐藏一些用户功能。禁用工具栏还有其他方法: #plone-tool

情况如下:

  • 一个用户登录到我的Plone 5站点
  • 工具栏将显示,但它们没有任何操作选项,因为它们位于经过身份验证的组中

他们只能通过身份验证访问几个区域。如何抑制某些用户组的工具栏?或者最好的方法是什么?

最简单的方法是使用CSS。您可以提供隐藏工具栏的条件CSS:

#plone-toolbar-container {display: none}
本文介绍了一种非常简单的方法:


请注意:工具栏还包含个人偏好部分,因此删除它也会隐藏一些用户功能。

禁用工具栏还有其他方法:

#plone-toolbar-container {display: none}
  • 将其从重氮主题中删除和/或
  • 把它从
请注意,尽管其中任何一个都将删除工具栏,
body
标记仍将包含一个
plone toolbar left default
CSS类,该类将导致填充页面(即,将有一个工具栏大小的空白)。因此,必须覆盖该文件的CSS,或
必须重写,以便不再生成CSS类


现有的Plone文档提供了如何使主题规则有条件或有条件地覆盖模板的说明。

一个好方法是使用角色和权限。通过覆盖工具栏并定义自己在
ModifyPortalContent
权限上过滤的条件,您可以仅隐藏
成员
角色的工具栏(而不是编辑、审阅者和管理者)

下面是一个示例,说明您在开发依赖于z3c.jbot的自己的附加组件

  • toolbar.pt
    模板的副本放在加载项的
    overrides
    目录中。这是模板的路径:
    plone/app/layout/viewlets/toolbar.pt
    。将新文件重命名为
    plone.app.layout.viewlets.toolbar.pt以使其工作()

  • 自定义模板中的主要条件

    <section id="edit-bar" role="toolbar"
     tal:define="portal_state view/portal_state;
                 personal_bar python: view.get_personal_bar()"
     tal:condition="not: portal_state/anonymous"
     i18n:domain="plone">
    
  • 现在为用户提供一些新链接,指向
    /@@personal preferences
    /logout
    ,您就完成了。

    Plone 5.1(dev): 我的简单且的CSS工作方法:

    body.userrole-member #edit-zone {  
      display:none;
    }
    body.userrole-editor #edit-zone,
    body.userrole-contributor #edit-zone,
    body.userrole-reviewer #edit-zone {
      display:inline-block;
    }
    
    另外要做:

    • 修复隐藏工具栏时的边距(body.userrole-editor.plone-toolbar-top-expanded…)
    • 显示下拉列表(登录用户名:useractions)而不是工具栏

      • 在plone 5.1中,我们拥有“显示工具栏”的权限

        在通用设置配置文件中,添加一个文件rolemap.xml

        在这里,我仅为具有角色编辑器、站点管理员、管理员(对成员隐藏)的用户显示工具栏。添加成员以仅隐藏它以进行身份验证,而不使用成员角色

        <?xml version="1.0"?>
        <rolemap>
          <permissions>
            <permission name="Show Toolbar" acquire="False">
              <role name="Manager"/>
              <role name="Site Administrator"/>
              <role name="Editor"/>
            </permission>
          </permissions>
        </rolemap>
        

        我想在plone Toolbar main中有工具栏,但不想有
        contentview
        图标和链接,所以我编辑了我的Toolbar.pt:

            <section id="edit-bar" role="toolbar"
             tal:define="portal_state view/portal_state;
                         personal_bar python: view.get_personal_bar();
                         checkPermission nocall: 
        context/portal_membership/checkPermission"
             tal:condition="not: portal_state/anonymous"
             i18n:domain="plone">
        
        
        


        您不想禁用工具栏,否则用户将无法访问个人首选项和注销操作。CSS规则可以使用
        #plone toolbar container:not(.role editor)
        扩展,然后为门户中的任何已知角色添加一行。这是可行的,只要你记得在添加角色时更新CSS,甚至可能在使用SASS时动态更新CSS。对不起,那一定是
        body:not(.role editor)#plone toolbar container
        AFAIK,这只会使工具栏变空而不会折叠?
            <section id="edit-bar" role="toolbar"
             tal:define="portal_state view/portal_state;
                         personal_bar python: view.get_personal_bar();
                         checkPermission nocall: 
        context/portal_membership/checkPermission"
             tal:condition="not: portal_state/anonymous"
             i18n:domain="plone">
        
        <ul class="plone-toolbar-main">
              <div 
                    tal:condition="python:checkPermission('Modify portal 
        content',context)"
                    tal:replace="structure view/base_render">