Artikelformat

Drupal 7: Views und die Titel der Gruppierungen

Derzeit beschäftige ich mich wieder einmal mit den Views (Ansichten) in Drupal. Bei einem View wollte ich gleich zwei Gruppierungen anwenden. Diese kann man (wie bekannt sein dürfte) bei den Einstellungen des Formats festlegen:

Gruppierungen in Views

Wenn man nur eine Gruppierung festlegt, dann wird über jeder Gruppe der Gruppenname (also der Titel) angezeigt. Hier wird er idealerweise von den „<h3>“-Tags umgeben. Fügt man nun, wie im Bild zu sehen, eine weitere Gruppierung hinzu, dann erhalten die Titel der zweiten Gruppierung die „<h3>“-Tags. Bei der ersten Gruppierung wurden sie aber nun durch ein „<div>“ ausgetauscht. Dies ist ziemlich ärgerlich, wenn man eine vernünftige Struktur haben möchte.

Anstatt nun einfach den CSS Markup anzupassen, kann man das Template für die Gruppierung anpassen. Zuständig hierfür ist das Template „views-view-grouping.tpl.php“, welches auch das angesprochene „<div>“ enthält. Um dies nun zu ändern, erstellt man innerhalb des Themeordners eine Datei mit einer der folgenden Namen:

  1. views-view-grouping–viewnamedisplayid.tpl.php
  2. views-view-grouping–displayid.tpl.php
  3. views-view-grouping–viewname.tpl.php
  4. views-view-grouping.tpl.php

Welcher Dateinamen gewählt wird, ist davon abhängig, wo dieses Template so überschrieben werden soll. Entweder soll das überall passieren (4.), bei allen Anzeigetypen der speziellen View (3.), bei allen Views mit dem speziellen Anzeigetyp (2.) oder bei der speziellen View mit dem speziellen Anzeigetyp (1.). Die fett markierten Stellen müssen entsprechend angepasst werden. Wenn man mit der Maus auf den Anzeigenamen drüber geht, dann sieht man anhand der entsprechenden URL die jeweiligen Namen (im folgenden Bild ist viewname gelb und displayid rot markiert):

Namen der View und die Display ID

Als Inhalt der neuen Datei nehmen wir den von der Originaldatei „views-view-grouping.tpl.php“:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
/**
* @file
* This template is used to print a single grouping in a view.
*
* It is not actually used in default Views, as this is registered as a theme
* function which has better performance. For single overrides, the template is
* perfectly okay.
*
* Variables available:
* - $view: The view object
* - $grouping: The grouping instruction.
* - $grouping_level: Integer indicating the hierarchical level of the grouping.
* - $rows: The rows contained in this grouping.
* - $title: The title of this grouping.
* - $content: The processed content output that will normally be used.
*/
?>
<div class="view-grouping">
  <div class="view-grouping-header"><?php print $title; ?></div>
  <div class="view-grouping-content">
    <?php print $content; ?>
  </div>
  </div>

Hier kann man nun die HTML-Tags in Zeile 20 entsprechend austauschen.

Die Darstellung des zweiten Titels kann man mit Hilfe der Designausgabe ändern (Erweitert -> Andere -> Theme: Information).

Schreibe einen Kommentar

Pflichtfelder sind mit * markiert.