首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Drupal 8预处理函数中的图像样式高度

Drupal 8预处理函数中的图像样式高度
EN

Stack Overflow用户
提问于 2016-09-09 20:32:21
回答 1查看 1.3K关注 0票数 1

我使用Drupal 8与令人敬畏的内联响应图像模块。我希望在呈现<picture>元素之前对img字段(回退图像)进行更改,更具体地说:我需要将widthheight参数添加到<img>字段。因此,我使用preprocess_image钩子。

这个钩子为我提供了一堆变量,最显著的是$variables[attributes]。由于某种原因,$variables[width]$variables[height]$variables[uri]都是空字符串。幸运的是,$variables[attributes]包含:$variables[attributes][data-entity-uuid]$variables[attributes][srcset],因此至少我有指向样式图像的路径,以及指向原始图像的uuid。

我想有两种方法可以到达我想去的地方(即加载样式的图像并获得高度和宽度):

  1. 将路径转换为uri (或者是路径)?
  2. 从uuid获取文件id,然后以某种方式从样式的图像中获取uri (这似乎是获得我想要的东西的一条弯路)

我不能让第一选择去工作。srcset中的路径是这样的:/sites/default/files/styles/image_lightbox/public/inline-images/erf-2.jpg?itok=4_EU9Ttx和我认为我需要将其转换为public://styles/image_lightbox/public/inline-images/erf-2.jpg,但是却陷入了这样的境地:

代码语言:javascript
复制
$parsed_url = parse_url($variables['attributes']['srcset']);
$path = file_build_uri($parsed_url['path']);

但是,这仍然将/sites/default/files部分留在那里。

我不能让备选方案2开始工作。我被困在:

代码语言:javascript
复制
$file_array = \Drupal::entityTypeManager()->getStorage('file')->loadByProperties(['uuid' => $img_uuid]);
$file_id = reset(array_keys($file_array));
$file = File::load($file_id);
$image_uri = ImageStyle::load('image-lightbox')->buildUrl($file->getFileUri());
$image = \Drupal::service('image.factory')->get($image_uri);

由于某些原因,这在$file = File::load($file_id)失败了。

在浪费了我生命中的8个小时来解决这个问题之后,我将非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-10 20:05:28

答案比我想象的要简单得多。

结果证明,选项1非常容易:而不是将/sites/default/files/styles/image_lightbox/public/inline-images/erf-2.jpg?itok=4_EU9Ttx (从$variables[attributes][srcset])转换为public://styles/image_lightbox/public/inline-images/erf-2.jpg。我不得不把它转换成http://hostname/path-to-drupal-install/sites/default/files/styles/image_lightbox/public/inline-images/erf-2.jpg?itok=4_EU9Ttx,就像这样:

代码语言:javascript
复制
global $base_url;
$image_uri = $base_url.$variables['attributes']['srcset'];
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39419297

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档