我在我的 Plone 4 站点中有一个自定义注册和 @@personal-preferences 页面,它有一些额外的字段,例如供人们粘贴其社交网络链接的区域以及他们的公司职位 - 它还显示他们的日期在网站上注册。(我使用了collective.examples.userdata来完成这个)
我可以使用以下定义成功地在页面模板中引用这些字段:
tal:define="membership context/portal_membership;
info python:membership.getMemberInfo(user.getId());
userPosition python:user.getProperty('position');
userFB python:user.getProperty('facebook');
userLinkedIn python:user.getProperty('linkedin');
userTwitter python:user.getProperty('twitter');
userRegDay python:user.getProperty('regday')"
我正在尝试编写一个 Python 脚本,它将获取最后一个定义python:user.getProperty('regday')
并做一些数学运算来显示他们在网站上注册了多长时间。
我的脚本正在调用 memberLength 并且在我的自定义文件夹中,我一直在使用以下方法调用它:
tal:content="context/memberLength"
我已经尝试了很多事情,但经常遇到回溯错误,所以我不太确定如何告诉 Python 获取这些字段详细信息。我尝试了以下操作(下面的示例只是我试图让 python 获取字段信息):
Python脚本:
membership = context.portal_membership.getMemberInfo()
return "%s" % membership
但是,它返回一个包含当前用户基本信息(用户名、描述等)的字典,那里对我没有任何用处——我的自定义字段都没有出现在这个字典中。
membership = context.getProperty('regday', 'Could not find')
return "%s" % membership
上面返回我的“找不到”消息,所以这也不起作用,下面的脚本也是如此:
membership = context.portal_membership.getProperty('regday','Could not find')
return "%s" % membership
我试过这个:
membership = context.portal_membership.user.getProperty('regday','Could not find')
return "%s" % membership
但是我收到了一条AttributeError: user
回溯消息。
我也尝试了这个 tal 声明:context/userRegDay/membershipLegth
但这给了我一个错误,所以我尝试了 Python 替代方案context.userRegDay.membershipLegth()
——但它们没有用。
我上面的所有字段都存在于ZMI 页面的Properties
选项卡中。portal_memberdata
谷歌在这里并没有给我太多帮助,我只能找到这个页面,但据我所知,它并没有真正涵盖我正在尝试做的事情。
谁能告诉我如何将我的 UserRegDay 变量传递给我的 Python 脚本?还是我对这一切都错了?
提前向任何有经验的 Plone 人道歉,他们的血压可能会因阅读我的尝试而升高。
非常感谢。