Drupal 8 - 在树枝或预处理文件中获取图像宽度/高度/alt/等..
Drupal 8 - Get the image width / height / alt / etc.. in a twig or preprocess file
我正在尝试获取预处理文件中图像的宽度和高度。
我设法生成了具有在管理员 media/styles 中定义的样式的图像,但我无法渲染生成图像的宽度 and/or 高度(有些人会说我应该只是在树枝文件中对其进行硬编码,但我实际上有兴趣学习如何获取稍后需要的元素:))
这是我用来获取特定内容类型的图片的方法:
假设我的字段的机器名称是 "field_image" 并且我的内容类型是 "article";
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.html.twig中做的就是:
<img src="{{ image.src }}" />
但是我也想获取width和height属性。我该怎么做?
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 class 的实例。您可以在此处阅读文档 https://api.drupal.org/api/drupal/core%21modules%21image%21src%21Plugin%21Field%21FieldType%21ImageItem.php/class/ImageItem/8.2.x
这是我找到的最简单的解决方案
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'];
}
}
我正在尝试获取预处理文件中图像的宽度和高度。
我设法生成了具有在管理员 media/styles 中定义的样式的图像,但我无法渲染生成图像的宽度 and/or 高度(有些人会说我应该只是在树枝文件中对其进行硬编码,但我实际上有兴趣学习如何获取稍后需要的元素:))
这是我用来获取特定内容类型的图片的方法: 假设我的字段的机器名称是 "field_image" 并且我的内容类型是 "article";
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.html.twig中做的就是:
<img src="{{ image.src }}" />
但是我也想获取width和height属性。我该怎么做?
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 class 的实例。您可以在此处阅读文档 https://api.drupal.org/api/drupal/core%21modules%21image%21src%21Plugin%21Field%21FieldType%21ImageItem.php/class/ImageItem/8.2.x
这是我找到的最简单的解决方案
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'];
}
}