Drupal 8在视图列表的第一行中更改图像样式

时间:2016-07-04 14:07:46

标签: php drupal drupal-views drupal-theming drupal-8

我创建的视图显示在第10页最新文章中。我排在第二行:图像和内容。在图像区域的设置中,我选择了图像样式(例如:中等)。如何仅在第一行中将图像样式更改为另一个(例如:大)?

我在预处理中尝试了它,但我不知道存储有关图像样式的信息在哪里:

function theme_preprocess_views_view_unformatted__lista_depesz_default(&$variables) {
$view = $variables['view'];
$rows = $variables['rows'];
$style = $view->style_plugin;
$options = $style->options;

$variables['default_row_class'] = !empty($options['default_row_class']);
foreach ($rows as $id => $row) {     $variables['rows'][$id] = array();
    $variables['rows'][$id]['content'] = $row;
    $variables['rows'][$id]['attributes'] = new Attribute();
    if ($row_class = $view->style_plugin->getRowClass($id)) {
      $variables['rows'][$id]['attributes']->addClass($row_class);
    }

    if ($id == 0 && $row['content']['#row']->_entity->field_image[0] != NULL) {
       //some php code to change image style
    }
}
}

此致

2 个答案:

答案 0 :(得分:0)

关于您的代码和解释,我不确定您要了解的是什么。

1 /您尝试将CS​​S类添加到视图的第一个图像。为什么不使用以下CSS路径 .my_view .first img {}

2 /如果您尝试调用其他图像样式,是否可以创建仅包含第1个项目或已升级的视图?然后是第二个视图与剩下的项目?

3 /如果您尝试调用其他图像样式,则可以不使用任何代码进行调用。 您安装模块http://drupal.org/project/views_conditional,然后添加2个具有2种不同图像样式的图像,并在条件字段集中应用条件。

我更喜欢解决方案3,因为它是纯粹的Drupal构建。

我希望它有所帮助。

干杯

答案 1 :(得分:0)

您可以使用原始图像创建视图,并在twig文件中设置样式,例如使用twig tweak: https://www.drupal.org/project/twig_tweak

在twig文件中,您可以设置任何带有条件的样式

{{ 'public://images/ocean.jpg' | image_style('thumbnail') }}