【问题标题】:Exclude plugins from Django cms search从 Django cms 搜索中排除插件
【发布时间】:2015-08-25 10:17:57
【问题描述】:

我在我的 Django CMS 网站上使用 aldryn-search。我的一个自定义插件对 Django 组有一个 ManyToMany 字段,以指示哪些用户组可以看到该插件(当然还有子插件)。我正在插件的render() 方法中考虑这个字段。

这在页面上运行良好,但我找不到阻止相关插件被搜索(即弹性搜索)索引的方法。有什么想法吗?

【问题讨论】:

  • 您好,您想从搜索中完全删除该插件吗?或者只是让它只有允许查看插件的用户才能在搜索结果中看到它?
  • 嗨,这两个选项都适合我。

标签: django django-cms


【解决方案1】:

所以要完全排除插件被搜索。 您可以在插件类或插件模型中设置search_fulltext = False

仅从无权访问该插件的用户中排除该插件需要更多的工作,但不会太复杂。

您必须为此插件创建一个专用的索引类,并从 cms 页面搜索中停用它,如下所示。

然后在专用的插件索引类中,添加一个MultiValueField 来保存可以看到此插件的用户ID 列表,请注意,您必须确保仅索引具有附加页面的插件@ 987654323@ 以及只有页面已发布和公开的插件。

完成索引类/逻辑后,如果使用 solr,则更新架构以反映新字段。

重建索引。

以下是查询的示例:

if request.user.is_authenticated():
   SearchQueryset().models(PluginClass).filter(allowed_user_ids=request.user.pk)

让我知道进展如何:)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 2016-09-10
    • 1970-01-01
    • 2020-06-10
    相关资源
    最近更新 更多