1

我有一个用于 Plone 上的 Researcher Profile 的宏,如果所需的文件夹不存在,我想调整它以不显示任何内容。就像现在一样,如果“selected-publications”文件夹不存在,则会引发错误。如果“context/selected-publications/...”为空或不存在,是否可以使宏不显示任何内容?这是我到目前为止的代码:

<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>
4

1 回答 1

4

在使用. tal:define_ 将您的代码逐字作为基线:tal:conditiontal: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>

这是Zope 模板中的常见用法。如果您查看 Plone 的源代码,您会发现可以掠夺的这种技术示例的宝库。

也许你想隐藏H2如果没有出版物存在?如果是这样,请将tal:defineandtal:condition放在 the 上div

你是从其他模板调用这个吗?如果不是,则无需将代码段定义为宏。

于 2013-10-09T20:21:58.247 回答