Python 如果特定文件夹不存在,是否为Plone调整宏以不显示任何内容?

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

我有一个宏用于Plone上的研究员配置文件,如果所需文件夹不存在,我希望调整该宏以不显示任何内容。现在,如果“所选出版物”文件夹不存在,它将抛出一个错误。如果“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>

  • ()


使用
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行更改为