基于cookie切换重氮(plone.app.theming)主题

基于cookie切换重氮(plone.app.theming)主题,plone,diazo,Plone,Diazo,我希望能够使管理员更改当前仅为他们使用的主题。可能通过设置cookie或特殊url。这将使他们能够调试其主题的副本,而另一个版本为其他所有人提供。支持这一点需要在plone.app.theming上进行工作,以便为不同的CMF皮肤配置不同的重氮主题。它在我的路线图上,但我不知道什么时候能实现。如果您有兴趣使用此功能或赞助此功能,请与我联系。我没有尝试过此功能,但它可能以这种方式工作: 为当前使用的主题定义一个参数。 请注意,您需要在portal_skins/manage_properties表单

我希望能够使管理员更改当前仅为他们使用的主题。可能通过设置cookie或特殊url。这将使他们能够调试其主题的副本,而另一个版本为其他所有人提供。支持这一点需要在plone.app.theming上进行工作,以便为不同的CMF皮肤配置不同的重氮主题。它在我的路线图上,但我不知道什么时候能实现。如果您有兴趣使用此功能或赞助此功能,请与我联系。

我没有尝试过此功能,但它可能以这种方式工作:

为当前使用的主题定义一个参数。 请注意,您需要在portal_skins/manage_properties表单中启用“允许选择任意皮肤”

[theme:parameters]
theme = python:self.context.REQUEST.get('plone_skin', 'Plone Default')
并根据rules.xml中的此参数选择主题或规则集

<theme href="theme1.html" if="$them = 'special theme'"/>
<theme href="default.html" if="$them = 'Plone Default'"/>

我制作了一些类似的东西,使用主机名来决定使用哪个重氮主题。使用不同的rules.xml、index.html和自定义资源没有问题。主题插件是另一回事(覆盖、视图、浏览器层等),我不知道在每个请求上注册/取消注册主题插件有多好


我回家后会更新这个评论,这样你就可以看到我做了什么。如果我没记错的话,我对plone.app.theming(应用主题的组件)中注册的内容进行了子类化并替换了它。

这可能会起作用,但之后的工作是使用两个独立的主题文件夹,并在它们之间切换,而不是使用1个rules.xml。我不理解你的评论。不确定您是否真的需要不同的主题文件夹。你可以在门户网站的皮肤中复制皮肤层并正确重命名。听起来正是我需要的。您是否考虑过将其作为补丁提交给p.a.theming?