3

我编写了一个 Diazo 规则,允许用户通过编辑站点中的特定页面来自定义其 Plone 站点的页脚。以下规则可以满足我的要求:

<replace css:theme-children="#portal-footer"
  css:content-children="#content-core"
  href="/theme_resources/footer"
  if="$footer_id = 'footer'" />

在高级设置中使用以下参数表达式:

footer_id = context/theme_resources/footer/id | nothing

如果我不包含条件,当用户删除或移动 /theme_resources/footer 时,我会得到以下回溯,并且根本不应用主题:

2013-05-28 10:46:55 ERROR plone.subrequest Error handling subrequest to /theme_resources/footer
Traceback (most recent call last):
  File "c:\plone43\eggs\plone.subrequest-1.6.7-py2.7.egg\plone\subrequest\__init__.py", line 116, in subrequest
    traversed = request.traverse(path)
  File "c:\plone43\eggs\zope2-2.13.19-py2.7.egg\ZPublisher\BaseRequest.py", line 518, in traverse
    return response.notFoundError(URL)
  File "c:\plone43\eggs\zope2-2.13.19-py2.7.egg\ZPublisher\HTTPResponse.py", line 718, in notFoundError

当我包含条件时,如果用户删除参数表达式,主题就会中断。

我可以在规则上使用不同的条件来直接测试页面的存在而不使用变量吗?

4

1 回答 1

0

您不能直接使用 Diazo 测试任意内容对象的存在。

如果您的问题是当条件评估为 false 时主题在视觉上破坏了,您可以使用另一个具有完全相反条件的规则,这样您就可以在重氮层中进行动态回退。不过,在这种情况下,我只需在 HTML 中放置一个静态后备页脚,以便在未应用规则时使用它。

另一方面,如果您的意思是在删除页脚页面时根本没有应用您的主题,请发布回溯

于 2013-05-27T23:49:28.183 回答