Drupal 8-在树枝或预处理文件中获取图像的宽度/高度/高度/等。

ZyD*_*ver 4 drupal-8

我实际上是在获取预处理文件中图像的宽度和高度。

我设法使用管理员在媒体/样式中定义的样式来生成图像,但是无法渲染所生成图像的宽度和/或高度(有人会说我应该将其硬编码在树枝文件中,但是我实际上对学习如何获取稍后需要的元素很感兴趣:))

这是我用来获取某种内容类型的图像的方法:假设我的字段的计算机名称为“ 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())
    ];
}
Run Code Online (Sandbox Code Playgroud)

之后,我需要在node--article.tpl.php中做的就是:

<img src="{{ image.src }}" />
Run Code Online (Sandbox Code Playgroud)

但是我也在尝试获取width和height属性,有人能解决吗?

谢谢!

小智 5

if ($node = \Drupal::routeMatch()->getParameter('node')) {
    if ($node->hasField('field_image')) {
        $imageField = $node->field_image;
        $properties = $imageField->getProperties();
    }
}
Run Code Online (Sandbox Code Playgroud)

$ 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

  • 一定已经改变了。现在位于$ node-&gt; field_image-&gt; getValue()或$ node-&gt; field_image-&gt; first()-&gt; getValue()中。 (2认同)