Python 如果特定文件夹不存在,是否为Plone调整宏以不显示任何内容?
我有一个宏用于Plone上的研究员配置文件,如果所需文件夹不存在,我希望调整该宏以不显示任何内容。现在,如果“所选出版物”文件夹不存在,它将抛出一个错误。如果“context/selected publications/…”为空或不存在,是否可以使宏不显示任何内容?以下是我目前掌握的代码:Python 如果特定文件夹不存在,是否为Plone调整宏以不显示任何内容?,python,macros,plone,Python,Macros,Plone,我有一个宏用于Plone上的研究员配置文件,如果所需文件夹不存在,我希望调整该宏以不显示任何内容。现在,如果“所选出版物”文件夹不存在,它将抛出一个错误。如果“context/selected publications/…”为空或不存在,是否可以使宏不显示任何内容?以下是我目前掌握的代码: <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" i18n:domain="RDSLocal"> <bo
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" i18n:domain="RDSLocal">
<body>
<div id="publications" metal:define-macro="publications" tal:omit-tag="">
<!--publications-->
<a href="selected-publications"><h2>Publications</h2></a>
<ul style="list-style: none; margin-left: 0px; margin-right: 0px;">
<tal:block tal:repeat="publication context/selected-publications/getFolderContents">
<li><tal:block tal:content="publication/Authors"/> (<tal:block tal:content="publication/publication_year"/>) <a tal:attributes="href publication/getURL" tal:content="publication/Title"/></li><br />
</tal:block>
</ul>
</div>
</body>
</html>
- ()
使用tal:define
和tal:condition
获取并检查出版物是否存在,然后再使用tal:repeat
对其进行迭代。以您的代码逐字记录为基准:
<div id="publications" metal:define-macro="publications" tal:omit-tag="">
<!--publications-->
<a href="selected-publications"><h2>Publications</h2></a>
<ul style="list-style: none; margin-left: 0px; margin-right: 0px;"
tal:define="publications nocall:context/selected-publications|nothing"
tal:condition="publications">
<tal:block tal:repeat="publication publications/getFolderContents">
<li><tal:block tal:content="publication/Authors"/>
(<tal:block tal:content="publication/publication_year"/>)
<a tal:attributes="href publication/getURL"
tal:content="publication/Title"/></li><br />
</tal:block>
</ul>
</div>
列表样式:无;左边距:0px;右边距:0px
tal:define=“出版物nocall:上下文/所选出版物|无”
tal:condition=“publications”>
()
. 如果你查看Plone的源代码,你会发现这项技术的宝库,你可以从中获取
如果不存在发布,可能要隐藏H2
?如果是这样,则将tal:define
和tal:condition
放在div
上
你是从其他模板调用这个吗?如果没有,则无需将代码段定义为宏。使用tal:define
和tal:condition
获取并检查出版物是否存在,然后再使用tal:repeat
对其进行迭代。以您的代码逐字记录为基准:
<div id="publications" metal:define-macro="publications" tal:omit-tag="">
<!--publications-->
<a href="selected-publications"><h2>Publications</h2></a>
<ul style="list-style: none; margin-left: 0px; margin-right: 0px;"
tal:define="publications nocall:context/selected-publications|nothing"
tal:condition="publications">
<tal:block tal:repeat="publication publications/getFolderContents">
<li><tal:block tal:content="publication/Authors"/>
(<tal:block tal:content="publication/publication_year"/>)
<a tal:attributes="href publication/getURL"
tal:content="publication/Title"/></li><br />
</tal:block>
</ul>
</div>
列表样式:无;左边距:0px;右边距:0px
tal:define=“出版物nocall:上下文/所选出版物|无”
tal:condition=“publications”>
()
. 如果你查看Plone的源代码,你会发现这项技术的宝库,你可以从中获取
如果不存在发布,可能要隐藏H2
?如果是这样,则将tal:define
和tal:condition
放在div
上
你是从其他模板调用这个吗?如果没有,则无需将代码段定义为宏。这非常有效,非常感谢!回答您的问题,是的,这是从另一个模板调用的。我们有一个研究人员内容类型,它有几个由宏(职务、合作者、出版物等)填充的显示字段。是否可以对此进行调整,以便宏按“出版物年”排序文件夹中项目的显示?现在,文件夹中项目的顺序就是它们的显示顺序。这里有一种方法:假设“publication\u year”是目录索引,将tal:repeat行更改为
,非常感谢!回答您的问题,是的,这是从另一个模板调用的。我们有一个研究人员内容类型,它有几个由宏(职务、合作者、出版物等)填充的显示字段。是否可以对此进行调整,以便宏按“出版物年”排序文件夹中项目的显示?现在,文件夹中项目的顺序就是它们的显示顺序。这里有一种方法:假设“publication\u year”是目录索引,将tal:repeat行更改为