0

私はZopeとPloneにとても慣れていません。index_htmlページにPythonコードを書き込もうとしています。人物タイプのオブジェクトのリストがあります。今度はそれらを並べ替えたいと思います。だから、私が以前持っていたのは:

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

今私は前にこのPythonコードを持ってい<tal:listingます...

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

しかし、どういうわけか、人の順序は同じままです。また、ビューでPythonコードを記述するこの方法も好きではありません。このコードを使用してリストの順序を変更する方法はありますか?

4

1 に答える 1

4

Zopeページテンプレートは<? ?>構文をまったくサポートしていません。

ただし、Pythonリストを問題なくループできますtal:repeat

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

sort_onただし、代わりに、パラメーターを使用して、portal_catalogにソートを実行させたいと思われます(カタログの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 に答える