我实际上是想在预处理文件中获取图像的宽度和高度。
我设法使用管理员中的媒体/样式中定义的样式生成图像,但我无法渲染生成的图像的宽度和/或高度(有些人会说我应该硬编码它在twig文件中但我真的有兴趣学习如何获取我以后需要的元素:))
以下是我用来获取特定内容类型的图片的方法: 让我们假设我的字段的机器名称是" field_image"我的内容类型是"文章";
if(!empty($node->field_image->entity->getFileUri())){
$style = ImageStyle::load('medium');
$image = $node->field_image->entity;
$variables['image'] = [
'src' => $style->buildUrl($image->getFileUri())
];
}
之后,我需要在node-article.tpl.php中做的所有事情是:
<img src="{{ image.src }}" />
但是我也试图获得宽度和高度属性,有没有人设法解决这个问题呢?
感谢&#39;!小号
答案 0 :(得分:4)
if ($node = \Drupal::routeMatch()->getParameter('node')) {
if ($node->hasField('field_image')) {
$imageField = $node->field_image;
$properties = $imageField->getProperties();
}
}
$ properties将包含您要求的属性数组。 $ imageField是Drupal \ image \ Plugin \ Field \ FieldType \ ImageItem类的一个实例。您可以在此处阅读文档https://api.drupal.org/api/drupal/core%21modules%21image%21src%21Plugin%21Field%21FieldType%21ImageItem.php/class/ImageItem/8.2.x
答案 1 :(得分:0)
这是我找到的最简单的解决方案
if ($node = \Drupal::routeMatch()->getParameter('node')) {
if ($node->hasField('field_image')) {
//get first image on multi value field
$image = $node->field_image[0]->getValue();
$width = $image['width'];
$height = $image['height'];
}
}