plone - 自定义用户偏好存储
问题描述
我正在创建一个包含一些用户偏好的新插件。假设每个用户可以从所有内容类别的列表中选择多个类别。
我的目标是:
- 用户的偏好必须是持久的(如果我重新安装附加组件,也许可以让他们仍然在这里)
- 注册和个人偏好页面保持不变。我将有一个自定义视图 - 表单来更新与此附加组件相关的首选项。
- 轻松索引自定义目录中的值。该目录将用于搜索对某个主题感兴趣的用户(例如:my_custom_catalog.query(subject=“Education”) -> 包含订阅“Education”主题的用户数据的大脑列表)。该目录在卸载时被删除,并在用户更改其偏好时更新。
你能推荐存储这些数据的最佳方式吗?我可以在不更改注册和个人默认表格的情况下使用会员数据吗?还是更好地使用持久化对象(导入持久化)?(任何例子都非常感谢。)
解决方案
在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})
更新它们。
当目录被删除/加载项被卸载时,这些值仍然被存储。注册页面和个人偏好表格也没有变化,只有当您想要(通过扩展它们)时。
推荐阅读
- python - 选择图像上的边界框并注释
- javascript - 使用脚本标签将 JS 数据导入 HTML 文件
- javascript - 在 react/JS 中映射数组和对象后如何设置状态?
- sql-server - 发布到 MS SQL 数据库时出现错误反应
- python - 获取矩阵的目录
- algorithm - 最大化连接图中要切割的边数
- javascript - mousedown 事件不适用于动态添加的元素
- react-native - 未强制执行 ReactiveSearch 默认查询
- c# - HtmlNode 从嵌套跨度中获取内部文本
- python-3.x - 在 slack API 上发送我的第一条消息