自定义用户首选项存储

时间:2018-07-16 14:00:08

标签: plone plone-4.x

我正在创建一个新的加载项,其中将包含一些用户首选项。 假设每个用户可以从所有内容类别的列表中选择多个类别。

我的目标是:

  • 用户首选项必须是持久的(如果我重新安装附加组件,可以将其保留在此处)
  • 注册页面和个人偏好设置页面保持不变。我将有一个自定义视图-表单,用于更新与此附加组件相关的首选项。
  • 易于索引自定义目录中的值。该目录将用于搜索对某个主题感兴趣的用户(例如:my_custom_catalog.query(subject =“ Education”)->包含订阅“ Education”主题的用户数据的大脑列表)。该目录会在卸载时被删除,并在用户更改其首选项时进行更新。

您能推荐存储此数据的最佳方法吗?我可以使用会员数据而不更改注册信息和个人默认表格吗?还是更好地使用持久对象(导入持久对象)? (任何示例都非常感谢。)

1 个答案:

答案 0 :(得分:1)

profiles/default/memberdata_properties.xml中:

<?xml version="1.0"?>
<object name="portal_memberdata">
  <property name="custom_topics" type="lines"></property>
</object>

您将创建一个升级步骤以导入memberdata-properties

然后使用:

user = api.user.get(user_id)
user.getProperty("custom_topics")

获取值和

user.setMemberProperties({'custom_topics':list_of_selected_topics})

更新它们。

在删除目录/卸载附加组件时,这些值将保留存储。 同样,只有在您希望(通过扩展)的情况下,注册页和个人喜好表格也不会更改。