aem - 如何使用Sightly(HTL)在服务器端基于设备渲染元素
问题描述
尝试根据设备屏幕尺寸渲染元素,例如我有两个 DIV(桌面和移动),我想为桌面用户和移动用户渲染桌面 DIV,等等。
<sly data-sly-test="${ANY_LOGIC_HERE}">
<div class="desktop-render">
<button type="button" aria-label="${item.Label}" class="btn btn-primary btn-desktop">Click Here</button>
</div>
</sly>
<sly data-sly-test="${ANY_LOGIC_HERE}">
<div class="mobile-render">
<button type="button" aria-label="${item.Label}" class="btn btn-primary btn-mobile">Click Here</button>
</div>
</sly>
我知道有一些 CSS/JS 技巧,但我需要通过服务器端。因此,页面视图源只能有一个 div。
解决方案
在回答这个问题之前,我会提醒您,为每个设备/用户代理呈现不同的标记通常是不好的做法。这使您的页面不可缓存,并且用户代理通常不是很可靠。还有其他技术,从客户端 DOM 操作到专用移动页面(如果设备是移动设备,您可以重定向到这些页面)。
也就是说,有一个助手MobileUtil,您可以在 Use-Object/Sling 模型中利用它来确定请求页面的设备是否似乎是移动设备。
确保检查所有AEM 服务器端移动 API!
推荐阅读
- javascript - 用于多个切换表的 Google 表格 IMPORTHTML
- reactjs - 工作箱 webpack 4 插件无法预缓存非 webpack 资产
- c# - 我想保持弹出窗口不关闭
- python - 我在调整 ConvLSTM 模型的大小/输入数组时收到错误消息
- python-3.x - 如何使用 Nginx 和 uWSGI 或 Gunicorn 在 Windows Server 上部署 Python Flask 应用程序?
- python - 如何使用 Python 绘制积分方程?
- java - 我可以在 JAVA 中使用“默认”变量吗?
- objective-c - 无法在 Objective-C Cocoa Xcode 中加载 Dylib
- amazon-web-services - kubernetes 没有为 ingress-nginx 控制器创建 ELB
- scala - org.apache.spark#spark-streaming_2.11_2.10;2.3.1:未找到