discoverygarden/dgi_image_discovery

v1.4.1 2024-09-23 13:07 UTC

README

简介

一个模块,用于简化Islandora存储库项的图像发现。图像发现会在以下位置寻找图像,并使用(并缓存)找到的第一个

  • 媒体字段的内容,节点上的field_representative_image
  • “Islandora缩略图”,即“Media of”节点的媒体(使用field_media_of),具有外部URI(field_external_uri)等于"http://pcdm.org/use#ThumbnailImage"的媒体使用(field_media_use)分类术语
  • 第一个子节点的Islandora缩略图媒体,即最低权重(field_weight)的节点的Islandora缩略图,它是问题节点的成员(field_member_of)。如果第一级子节点中没有找到,它将查看第一级子节点第一级子节点的缩略图,以此类推,直到深度为3。

需求

此模块需要以下模块/库

安装

按常规安装,有关更多信息,请参阅此处

使用方法

此模块允许在多个上下文中对父聚合对象(如集合、复合物和分页对象)进行图像发现。

搜索API

可以通过多种方式将发现的图像的URL索引到搜索API中

  • deferred:创建指向专门端点的URL,该端点可以处理最终图像查找。由于此处给出的响应可以了解Drupal的缓存标签失效,因此我们可以相应地更改最终提供的内容。
  • pre_generated:直接创建具有样式的图像的URL。由于访问控制约束可能会发生变化,这可能会导致索引中的陈旧引用持续存在。

此设置在字段添加到索引时可配置。实际上,此默认值设置为pre_generated,以保持现有/当前行为;然而,在没有其他机制执行批量重新索引的情况下,可能更倾向于使用deferred。特别是,如果有诸如EmbargoEmbargo Inheritance之类的机制,其中期望将应用于父节点的访问控制语句应用于子节点。话虽如此,在没有复杂的访问控制要求的情况下,pre_generated可能更方便/高效。

延迟机制

有多个插件可以取消引用延迟的URL

  • redirect:从我们的端点将重定向到最终派生图像的目的地。很容易做到;然而
    • 会导致另一轮往返
    • 如果结果集中显示的两个项目恰好引用相同的图像,则可能会引起竞争条件。Drupal维护图像派生的锁/信号量:如果第二个请求在第一个请求仍然具有派生图像的锁时发生,则第二个请求将收到带有Retry-After3秒的HTTP 503,但许多浏览器不使用Retry-After标题。
  • subrequest:从我们的端点直接流式传输图像。可以处理带有Retry-After的503。

目前使用的插件由DGI_IMAGE_DISCOVERY_DEFERRED_PLUGIN控制,默认为subrequest

视图

引用节点内容的视图可以直接使用虚拟字段。

将“代表图片”字段添加到您的内容类型

要覆盖使用“Islandora”缩略图,您可以为每个适用的内容类型添加新字段。为此

  1. 在您的内容类型的“管理字段”页面,选择“创建新字段”。
  2. 在“添加新字段”列表中,选择“媒体”(如果是在Drupal < 10.2,这是“引用 > 媒体”)
  3. 将新字段的标签设置为“代表图片”,这样该字段的机器名就是 field_representative_image。此机器名必须设置;如果您愿意,以后可以更改标签。
  4. 在下一页上,在“要引用的项目类型”设置中,选择“媒体”,并将“允许的值数”保留为1。
  5. 在下一页上,在“媒体类型”复选框中,选择“图片”。
  6. 单击“保存设置”。

如果您要将字段添加到多个内容类型中,应在后续的内容类型中选择“重用现有字段”。

将“默认图片”字段添加到您的内容类型

此模块通过更新钩子将在Islandora模型词汇表中添加一个field_default_image字段。

  • 为内容类型配置默认图片
    • 创建一个图片类型的媒体项目,作为所需内容类型的默认图片。
    • 在Islandora模型词汇表中,为每个术语选择适当的默认图片。

此设置允许模块将默认缩略图(TN)与缺少特定内容类型的缩略图的对象相关联。

在视图中使用图片

在配置内容视图时,添加并配置虚拟字段“DGI Image Discovery Discovered Image”。

在内容显示中使用图片

在内容类型的“管理显示”下,您可以选择启用虚拟字段“DGI Image Discovery Discovered Image”。

故障排除/问题

遇到问题或解决了问题?请联系 discoverygarden

维护者/赞助商

当前维护者

开发

如果您想为此模块做出贡献,请创建一个问题、拉取请求,或联系 discoverygarden

许可证

GPLv3