Verwendung von template_preprocess_views_view zum Übergeben einer Variablen an eine Views-TPL-Datei

8

Da mir der Fall kürzlich zum zweiten Mal wieder einfiel, beschloss ich, die Frage zu stellen, um vielleicht etwas zu lernen.

In Ansichten, die Hauptanzeige Titel (das die man in der Regel an der Spitze der Ansicht gerendert wird) ist verfügbar in der Display - Ausgabe als $titleaber scheint nicht in verfügbar zu sein Stil Ausgabe überhaupt. Stattdessen bedeutet die $titleVariable in der Stilausgabe den Namen einer Gruppe, wenn eine Gruppierung verwendet wird.

Ich möchte, dass dieser Anzeigetitel ('menschlicher Name') in jeder Vorlage als verfügbar ist $display_title. Also habe ich diesen Code in meine template.php eingefügt:

function MYTHEME_preprocess_views_view(&$variables){
  if($variables['name'] == 'studios' && $variables['display_id'] == 'block'){
    $view = $variables['view'];
    $variables['display_title'] = $view->human_name;
  }
  dpm($variables);
}

... in der Hoffnung, den menschlichen Titel zur Hand zu haben: <?php print $display_title; ?>

... aber keine Freude. Was mache ich falsch?

Artur
quelle

Antworten:

10

Wie Sie auch wissen, verfügt eine Ansicht über mehrere Vorlagen, die je nach Stil variieren können, zum Beispiel:

  • Anzeigeausgabe: views-view.tpl.php
  • Stilausgabe: views-view-STYLE.tpl.php
  • Ausgabe im Zeilenstil: views-view-fields.tpl.php
  • Feldinhalt: views-view-field.tpl.php

usw.

Jede dieser Vorlagen verfügt über eine eigene Vorverarbeitungsfunktion. Was Sie in Ihrem Code tun, wirkt sich nur auf die Anzeigeausgabe aus, da Sie nur die views-view.tpl.php ( template_preprocess_views_view) vorverarbeiten.

Um herauszufinden, welche Vorlagendateien für Ihre spezifische Ansicht verfügbar sind, können Sie die Bearbeitungsseite anzeigen und im Abschnitt "Erweitert" am Ende der Spalte auf "Thema: Informationen" klicken. Sie sehen, welche Vorlagendateien Ihre Ansicht verwendet (in Fettdruck) und welche Vorlagendateien Sie zum Überschreiben verwenden würden.

Die Vorverarbeitungsfunktionen sollten nach der Vorlagendatei benannt sein und die Bindestriche durch Unterstriche ersetzen. Zum Beispiel für views-view-STYLE.tpl.phpwäre template_preprocess_views_view_STYLE().

Елин Й.
quelle
0

Sie könnten die Funktionen verwenden:

  1. drupal_set_title ()

    Legt den Titel der aktuellen Seite fest.

  2. drupal_get_title ()

    Ruft den Titel der aktuellen Seite ab.

Vlasin
quelle
Vielen Dank, aber meine Ansicht generiert eher einen Block als eine Seite, daher ist dies keine Lösung. Darüber hinaus müsste dafür ein String-Argument übergeben t('My Views Title')und auf der Administratorseite erneut übersetzt werden. Welches ist, was ich vermeiden möchte (noch habe ich diese Ansicht bereits übersetzt ...).
Artur
0

Wenn ich mich recht erinnere, können Sie den Titel mit dem Ansichtsobjekt übergeben, eine neue Variable innerhalb des Ansichtsobjekts hinzufügen und nur in der Vorlagendatei.

rreiss
quelle
0

Um die spezifische Frage "Übergeben einer Variablen an eine Vorlagendatei" zu beantworten ... Ich denke, Sie müssen nur einen anderen Hook verwenden. Hängen Sie die Variable folgendermaßen an Ihr $viewObjekt an:

function NAME_OF_MODULE_views_pre_render(&$view) {
  $view->display_title = "What have you";
}

Dann in einer Vorlagendatei wie views-view--NAME_OF_VIEW--page.tpl.php:

print $view->display_title;

Musste das einfach selbst machen und es hat super funktioniert.

cdmo
quelle