discoverygarden / dgi_image_discovery
Requires
- drupal/search_api: ^1.19
Conflicts
- drupal/core: <10.2
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
。特别是,如果有诸如Embargo和Embargo Inheritance之类的机制,其中期望将应用于父节点的访问控制语句应用于子节点。话虽如此,在没有复杂的访问控制要求的情况下,pre_generated
可能更方便/高效。
延迟机制
有多个插件可以取消引用延迟的URL
redirect
:从我们的端点将重定向到最终派生图像的目的地。很容易做到;然而- 会导致另一轮往返
- 如果结果集中显示的两个项目恰好引用相同的图像,则可能会引起竞争条件。Drupal维护图像派生的锁/信号量:如果第二个请求在第一个请求仍然具有派生图像的锁时发生,则第二个请求将收到带有
Retry-After
为3
秒的HTTP 503,但许多浏览器不使用Retry-After
标题。
subrequest
:从我们的端点直接流式传输图像。可以处理带有Retry-After
的503。
目前使用的插件由DGI_IMAGE_DISCOVERY_DEFERRED_PLUGIN
控制,默认为subrequest
。
视图
引用节点内容的视图可以直接使用虚拟字段。
将“代表图片”字段添加到您的内容类型
要覆盖使用“Islandora”缩略图,您可以为每个适用的内容类型添加新字段。为此
- 在您的内容类型的“管理字段”页面,选择“创建新字段”。
- 在“添加新字段”列表中,选择“媒体”(如果是在Drupal < 10.2,这是“引用 > 媒体”)
- 将新字段的标签设置为“代表图片”,这样该字段的机器名就是
field_representative_image
。此机器名必须设置;如果您愿意,以后可以更改标签。 - 在下一页上,在“要引用的项目类型”设置中,选择“媒体”,并将“允许的值数”保留为1。
- 在下一页上,在“媒体类型”复选框中,选择“图片”。
- 单击“保存设置”。
如果您要将字段添加到多个内容类型中,应在后续的内容类型中选择“重用现有字段”。
将“默认图片”字段添加到您的内容类型
此模块通过更新钩子将在Islandora模型词汇表中添加一个field_default_image字段。
- 为内容类型配置默认图片
- 创建一个图片类型的媒体项目,作为所需内容类型的默认图片。
- 在Islandora模型词汇表中,为每个术语选择适当的默认图片。
此设置允许模块将默认缩略图(TN)与缺少特定内容类型的缩略图的对象相关联。
在视图中使用图片
在配置内容视图时,添加并配置虚拟字段“DGI Image Discovery Discovered Image”。
在内容显示中使用图片
在内容类型的“管理显示”下,您可以选择启用虚拟字段“DGI Image Discovery Discovered Image”。
故障排除/问题
遇到问题或解决了问题?请联系 discoverygarden。
维护者/赞助商
当前维护者
开发
如果您想为此模块做出贡献,请创建一个问题、拉取请求,或联系 discoverygarden。