0

我对 Zope 和 Plone 很陌生。我正在尝试在 index_html 页面中编写 python 代码。我有人员类型的对象列表,现在我想重新排序它们。所以,我之前有的是:

<ul tal:define="persons python: context.portal_catalog(portal_type='Person');">
<tal:listing repeat="p persons">

<tal:listing现在我在...之前有这个python代码

<?python
  order=[0,2,1]
  persons = [persons[i] for i in order]
?>

但不知何故,这个人的顺序保持不变。另外,我也不喜欢这种在视图中编写 python 代码的方式。有什么办法可以使用此代码更改列表的顺序?

4

1 回答 1

4

Zope 页面模板根本不支持<? ?>语法。

tal:repeat但是,您可以很好地遍历您的 python 列表:

<ul tal:define="persons python: context.portal_catalog(portal_type='Person');">
    <tal:listing repeat="i python:[0, 2, 1]">
        <li tal:define="p python:persons[i]" tal:content="p/name">Person name</li>
    </tal:listing>
</ul>

但是,我怀疑您想让 portal_catalog 使用sort_on参数进行排序(请参阅目录上的 Plone KB 文章):

<ul tal:define="persons python: context.portal_catalog(portal_type='Person', sort_on='sortable_title');">
    <tal:listing repeat="p persons">
        <li tal:content="p/name">Person name</li>
    </tal:listing>
</ul>

如果您想做更复杂的事情,请使用浏览器视图为您进行列表按摩。

于 2012-07-25T13:48:13.100 回答