it-swarm.com.de

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

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

In Ansichten ist der Hauptanzeigetitel (der normalerweise oben in der Ansicht gerendert wird) in Anzeigeausgabe als $title Verfügbar, scheint jedoch nicht in - verfügbar zu sein. Stilausgabe überhaupt. Stattdessen bedeutet die Variable $title In Stilausgabe den Namen einer Gruppe, wenn eine Gruppierung verwendet wird.

Ich möchte, dass dieser Anzeigetitel ('menschlicher Name') in der Vorlage any als $display_title Verfügbar ist. 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?

8
Artur

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 Datei 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 wäre für views-view-STYLE.tpl.phptemplate_preprocess_views_view_STYLE().

10
Елин Й.

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.

0
Vlasin

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.

0
rreiss

Um die spezielle Frage "Übergeben einer Variablen an eine Vorlagendatei" zu beantworten ... Ich denke, Sie müssen nur einen anderen Hook verwenden. Hängen Sie die Variable an Ihr $view Objekt wie folgt:

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.

0
cdmo