Plone 根据用户角色更改重氮主题元素

Plone 根据用户角色更改重氮主题元素,plone,diazo,Plone,Diazo,是否有可能使重氮主题的元素取决于Plone中的用户角色?例如:我想为一些特定角色在主题中提供一个不同的标题图像,并在用户登录后立即在站点上进行更改 可能是相关的,但我更愿意通过角色分配来管理它 这可以通过指定一个。未测试,但您可以定义如下参数: roles = python: portal_state.member().getRolesInContext(context) 或者类似于: is_manager = python: 'Manager' in portal_state.member(

是否有可能使重氮主题的元素取决于Plone中的用户角色?例如:我想为一些特定角色在主题中提供一个不同的标题图像,并在用户登录后立即在站点上进行更改


可能是相关的,但我更愿意通过角色分配来管理它

这可以通过指定一个。未测试,但您可以定义如下参数:

roles = python: portal_state.member().getRolesInContext(context)
或者类似于:

is_manager = python: 'Manager' in portal_state.member().getRolesInContext(context)
然后在rules.xml文件中使用该参数。这将关闭经理的主题设置:

<notheme if="$is_manager" />


这对标题没有任何作用,但您应该能够从中推断。

通过指定。未测试,但您可以定义如下参数:

roles = python: portal_state.member().getRolesInContext(context)
或者类似于:

is_manager = python: 'Manager' in portal_state.member().getRolesInContext(context)
然后在rules.xml文件中使用该参数。这将关闭经理的主题设置:

<notheme if="$is_manager" />


这与标题无关,但您应该能够从中推断。

如果您知道如何处理Python代码并创建浏览器视图,您可以定义一个返回一些css的浏览器视图。我在一个客户端项目中使用了下面的代码来插入一些css,这些css将最近的
header.jpg
设置为背景,因此您可以在不同的部分中使用不同的背景

在configure.zcml中:

<browser:page
    for="*"
    permission="zope.Public"
    name="header-image-css"
    class=".utils.HeaderImageCSS"
    />

如果您知道如何处理Python代码并创建浏览器视图,那么可以定义一个返回一些css的浏览器视图。我在一个客户端项目中使用了下面的代码来插入一些css,这些css将最近的
header.jpg
设置为背景,因此您可以在不同的部分中使用不同的背景

在configure.zcml中:

<browser:page
    for="*"
    permission="zope.Public"
    name="header-image-css"
    class=".utils.HeaderImageCSS"
    />

非常感谢您提出的方法!在我将答案标记为正确之前,请给我几天时间试用并测试代码。非常感谢您提出的方法!给我几天的时间来试一下并测试代码,然后我把答案标记为正确。哇!我惊讶于这种工作方式是多么简单和强大。您还可以使用其他示例,但是直接通过重氮主题设置条件更快更容易。对于试用者:请确保在更改rules.xml文件后重新启动plone。重新加载css不足以传播更改。哇!我惊讶于这种工作方式是多么简单和强大。您还可以使用其他示例,但是直接通过重氮主题设置条件更快更容易。对于试用者:请确保在更改rules.xml文件后重新启动plone。重新加载css不足以传播更改。