2

我正在为 Plone 3.x 开发皮肤。皮肤与默认主题有很多不同,我想将默认皮肤保持在管理模式。我读了一些像这样的解决方案http://maurits.vanrees.org/weblog/archive/2008/01/switch-your-skin-based-on-the-url。但是我不能在我的网络中使用子域,所以我不能使用这些解决方案。

我认为解决方案将是这样的:

在我的 main_template.pt:
<tal condition:"true: Autenticated as admin" >
''把细节 css
</tal>

但我不知道 Plone 中的正确语法

谢谢你。

4

3 回答 3

1

这不会直接回答您的问题,但您可能想看看“ Editskin switcher ”。

于 2010-06-30T06:31:14.740 回答
1

最后,我使用了这个解决方案。检测您是否通过身份验证的条件是 tal:condition="not: here/portal_membership/isAnonymousUser"。因此,您可以仅将样式表用于访问者,而将其他样式表用于经过身份验证的用户。像这样的东西:

< style type="text/css" tal:content="string:@import url($portal_url/visitors.css);" media="all" tal:condition="这里/portal_membership/isAnonymousUser" />

< style type="text/css" tal:content="string:@import url($portal_url/admin.css);" media="all" tal:condition="not: here/portal_membership/isAnonymousUser" />

也许这不是最佳解决方案,但对我有用

于 2010-06-30T10:52:54.167 回答
1

您的解决方案将起作用 - 但还有更好的方法。你没有描述你的样式表是如何安装的,但是这里有两种方法可以做到。

或者,如果您有策略产品,请将以下内容放入产品的配置文件/default/cssregistry.xml 中:

<object name="portal_css" meta_type="Stylesheets Registry">  
  <stylesheet title="" cacheable="True" compression="safe" cookable="True" enabled="1"  
             expression="here/portal_membership/isAnonymousUser"  
             id="visitors.css"  
             media="all" rel="stylesheet" rendering="import"/>  
  <stylesheet title=""  
             cacheable="True" compression="safe" cookable="True" enabled="1"  
             expression="not:here/portal_membership/isAnonymousUser"  
             id="admin.css"  
             media="all" rel="stylesheet" rendering="import"/>  
</object>

或者; 访问ZMI(Zope管理界面)中的“portal_css”。在那里,您可以通过“添加”上面显示的两个样式表来做同样的事情,其中​​“条件”是上面“表达式”的值。

这些是相同的——一个只是通过网络设置,另一个通过 GenericSetup——现在 Plone 将自动将一个或另一个 css 文件合并到每个页面中,而无需更改 main_template.pt。这是你永远不应该做的事情。

于 2011-03-09T15:39:19.693 回答