使用Plone 3.3.5,我有一个经典的foldercontents,它是按日期(反向)排序的事件列表。我正在逐个显示每个元素。我希望在事件不再是将来但是过去事件时显示特殊信息。
现在,我有这个:
<span tal:define="endDate item/end;
" tal:condition="python: endDate.isPast()">Past event<br />
</span>
但我想只显示一次此消息而不是所有过去的事件......
我尝试创建一个Python变量但未能这样做(弄乱了未声明的变量)。
感谢您的帮助
PS:我对Plone的模板语言并不熟悉......
答案 0 :(得分:3)
最简单的方法可能就是让它们成为你迭代的两个列表:一个用于未来事件,一个用于过去的事件。然后你可以把'过去事件'作为标题放在to列表之间。
答案 1 :(得分:1)
您可以计算将来的事件,并在此变为0时显示相应的消息。
请参阅门户网站根目录中的“events”集合,以获取此示例。
答案 2 :(得分:1)
那么, 它可能看起来有点棘手,因为在管理db结果集时这种方法很自然。
tal:repeat语句非常强大,在您的情况下,您可以依赖“第一个”变量信息。
尝试迭代您处理isPast信息的字典列表,而不是简单的事件列表。
运行以下(简单和残酷)代码......这是自我解释。
<div tal:define="past string:Past events;
future string:Events to Come;
richList python:[{'event':'event1', 'passed': past},
{'event':'event2', 'passed': future},
{'event':'event3', 'passed': past},
{'event':'event4', 'passed': future}];
dummy python:richList.sort(lambda x,y:cmp(x['passed'], y['passed']))">
<tal:block repeat="item richList">
<h2 tal:condition="repeat/item/first/passed"
tal:content="item/passed">
Past Events or Future
</h2>
<a tal:content="item/event">event's url</a>
</tal:block>
</div>
您可以创建您的richList迭代目录调用的结果。您可以根据event / end / isPast函数创建字典项设置'传递'值。
希望这会有所帮助。
答案 3 :(得分:1)
您可以在listFolderContents中“过滤”,就像在进行目录搜索时可以过滤一样。 见http://collective-docs.plone.org/content/listing.html#getting-folder-objects-filtered 如何做到这一点。您可以在过滤器中添加“结束”索引,请参阅http://plone.org/documentation/manual/plone-community-developer-documentation/searching-and-indexing/query#querying-by-date