【问题标题】:Drupal 8 change image style in first row on views listDrupal 8 在视图列表的第一行更改图像样式
【发布时间】:2016-11-06 07:16:54
【问题描述】:

我创建了显示在第 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
    }
}
}

问候

【问题讨论】:

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


    【解决方案1】:

    关于你的代码和你的解释,我不确定你想要达到什么目的。

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

    2/ 如果您尝试调用另一种图像样式,您可以创建一个仅包含第一项的视图,还是一个提升的视图?然后是其他项目的第二个视图?

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

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

    希望对你有帮助。

    干杯

    【讨论】:

      【解决方案2】:

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

      在 twig 文件中,您可以使用条件设置任何样式

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-05
        • 2023-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多