如何在 Magnolia 5.7 中检测设备并渲染适当的图像变化

Posted

技术标签:

【中文标题】如何在 Magnolia 5.7 中检测设备并渲染适当的图像变化【英文标题】:How to detect device and render appropriate image variation in Magnolia 5.7 【发布时间】:2019-11-27 19:36:43 【问题描述】:

到目前为止,我成功地在主题中配置了图像变体,并在 ftl 模板中渲染了一张图像的不同变体

[#assign myAsset = damfn.getAsset("jcr","/futuristic_city_1.jpg")!]
[#if myAsset??]
    <img src="$myAsset.link"/>
    [#assign myThumbnail = damfn.getRendition(myAsset, "240x180")!]
    [#if myThumbnail??]
        <img src="$myThumbnail.getLink()"/>
    [/#if]
[/#if]
我会使用 Device Detection module 来检测传入的请求,但找不到任何指南或示例代码来说明如何在 FTL 模板中使用它来选择适当的图像变体。 第二个问题是,如果内容是使用 ReactJs 组件呈现的(它们的内容加载了从 JCR 检索的 JSON 数据),我应该使用什么

【问题讨论】:

【参考方案1】:

有一个社区模块可以做到这一点。它有一个过滤器,并根据请求尝试检测设备。更多信息:https://documentation.magnolia-cms.com/display/DOCS57/Device+Detection+module

【讨论】:

我已经提到我知道“设备检测模块”但找不到示例。尤其是短语“频道映射到变体。变体由模板和优化内容以在设备上显示的主题组成。”只留下一个问题“如何?” @AlexeiP 我会删除我的答案,我也不知道你的问题的答案:(【参考方案2】:

最好和最现代的方法是定义多个图像变体并定义一组响应式图像。

新的 html 标准包括 img-tag 的属性“srcset”:

https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images

在响应式网站中,浏览器将加载最合适的图像

【讨论】:

以上是关于如何在 Magnolia 5.7 中检测设备并渲染适当的图像变化的主要内容,如果未能解决你的问题,请参考以下文章

Magnolia 版本中的隐藏操作是 5.7

如何在 Salesforce 社区上渲染来自 Magnolia CMS 的图像?

如何在 Magnolia 中创建自定义表单处理器?

在 Magnolia 模板脚本中渲染组件索引

Magnolia 5.5.7 Stories 应用程序内部化

Magnolia 从 5.3.4 升级到最新版本