使用TAL语言在Plone中按用户查找信息

时间:2012-09-20 10:04:19

标签: plone zope

我已经安装了collective.portlet.tal。 我的目标是通过此portlet为每个用户显示他在自己的文件夹中的信息。 Fox现在我想展示:用户名和电子邮件。

默认情况下,我有一个不显示特殊内容的portlet:

<dl class="portlet portlet${portlet_type_name}"
tal:define="portal_state context/@@plone_portal_state;
            context_state context/@@plone_context_state;">

<dt class="portletHeader">
    <span class="portletTopLeft"></span>
    <span>
       Header
    </span>
    <span class="portletTopRight"></span>
</dt>

<dd class="portletItem odd">
    Body text
</dd>

<dd class="portletFooter">
    <span class="portletBotomLeft"></span>
    <span>
       Footer
    </span>
    <span class="portletBottomRight"></span>
</dd>

我在Body这一行中插入了获取文件夹的用户名,但它返回了访问者的名字。如果我是管理员,它将显示“admin”,或者如果我是会员,它将显示会员的姓名......等等。

<p tal:content="user/getUserName"></p>

如何显示该文件夹的创建者? 如何才能获得该用户对该文件夹的电子邮件?

1 个答案:

答案 0 :(得分:2)

您正在寻找文件夹的Creator

<p tal:define="creator context/Creator;
               mtool context/@@plone_tools/membership;
               author python:mtool.getMemberInfo(creator)"
   tal:content="python:author and author['fullname'] or creator">Author name</p>

以上代码段查找创建者userid(默认为内容对象的所有者),并使用成员资格工具查找该用户的成员信息对象。然后我们显示用户的全名,或者如果创建者不是Plone用户,则只显示用户ID。