Same filename in this branch
  1. 10 core/modules/views/templates/views-view-grid.html.twig
  2. 10 core/themes/olivero/templates/views/views-view-grid.html.twig
  3. 10 core/themes/stable9/templates/views/views-view-grid.html.twig
  4. 10 core/themes/starterkit_theme/templates/views/views-view-grid.html.twig
Same filename and directory in other branches
  1. 8.9.x core/modules/views/templates/views-view-grid.html.twig
  2. 9 core/modules/views/templates/views-view-grid.html.twig

Default theme implementation for views to display rows in a grid.

Available variables:

  • attributes: HTML attributes for the wrapping element.
  • title: The title of this group of rows.
  • view: The view object.
  • rows: The rendered view results.
  • options: The view plugin style options.
    • row_class_default: A flag indicating whether default classes should be used on rows.
    • col_class_default: A flag indicating whether default classes should be used on columns.
  • items: A list of grid items. Each item contains a list of rows or columns. The order in what comes first (row or column) depends on which alignment type is chosen (horizontal or vertical).

    • attributes: HTML attributes for each row or column.
    • content: A list of columns or rows. Each row or column contains:
      • attributes: HTML attributes for each row or column.
      • content: The row or column contents.

See also

template_preprocess_views_view_grid()

File

core/modules/views/templates/views-view-grid.html.twig
View source
  1. {#
  2. /**
  3. * @file
  4. * Default theme implementation for views to display rows in a grid.
  5. *
  6. * Available variables:
  7. * - attributes: HTML attributes for the wrapping element.
  8. * - title: The title of this group of rows.
  9. * - view: The view object.
  10. * - rows: The rendered view results.
  11. * - options: The view plugin style options.
  12. * - row_class_default: A flag indicating whether default classes should be
  13. * used on rows.
  14. * - col_class_default: A flag indicating whether default classes should be
  15. * used on columns.
  16. * - items: A list of grid items. Each item contains a list of rows or columns.
  17. * The order in what comes first (row or column) depends on which alignment
  18. * type is chosen (horizontal or vertical).
  19. * - attributes: HTML attributes for each row or column.
  20. * - content: A list of columns or rows. Each row or column contains:
  21. * - attributes: HTML attributes for each row or column.
  22. * - content: The row or column contents.
  23. *
  24. * @see template_preprocess_views_view_grid()
  25. *
  26. * @ingroup themeable
  27. */
  28. #}
  29. {%
  30. set classes = [
  31. 'views-view-grid',
  32. options.alignment,
  33. 'cols-' ~ options.columns,
  34. 'clearfix',
  35. ]
  36. %}
  37. {% if options.row_class_default %}
  38. {%
  39. set row_classes = [
  40. 'views-row',
  41. options.alignment == 'horizontal' ? 'clearfix',
  42. ]
  43. %}
  44. {% endif %}
  45. {% if options.col_class_default %}
  46. {%
  47. set col_classes = [
  48. 'views-col',
  49. options.alignment == 'vertical' ? 'clearfix',
  50. ]
  51. %}
  52. {% endif %}
  53. {% if title %}
  54. <h3>{{ title }}</h3>
  55. {% endif %}
  56. <div{{ attributes.addClass(classes) }}>
  57. {% if options.alignment == 'horizontal' %}
  58. {% for row in items %}
  59. <div{{ row.attributes.addClass(row_classes, options.row_class_default ? 'row-' ~ loop.index) }}>
  60. {% for column in row.content %}
  61. <div{{ column.attributes.addClass(col_classes, options.col_class_default ? 'col-' ~ loop.index) }}>
  62. {{- column.content -}}
  63. </div>
  64. {% endfor %}
  65. </div>
  66. {% endfor %}
  67. {% else %}
  68. {% for column in items %}
  69. <div{{ column.attributes.addClass(col_classes, options.col_class_default ? 'col-' ~ loop.index) }}>
  70. {% for row in column.content %}
  71. <div{{ row.attributes.addClass(row_classes, options.row_class_default ? 'row-' ~ loop.index) }}>
  72. {{- row.content -}}
  73. </div>
  74. {% endfor %}
  75. </div>
  76. {% endfor %}
  77. {% endif %}
  78. </div>

Related topics