Ruft den Anzeigenamen von hook_preprocess_views_view ab


7

Ich möchte hook_preprocess_views_view verwenden, damit mehrere Ansichten dieselbe Vorlage verwenden, indem ich theme_hook_suggestions hinzufüge, wie in diesem Artikel beschrieben: http://greenash.net.au/ Thoughts/2014/04/sharing-templates-between-multiple-drupal -views /

function mytheme_preprocess_views_view(&$vars) {

  if (in_array(
    $vars['view']->name, array(
      'whatever'))) {
    $vars['theme_hook_suggestions'][] =
      'whatever';
  }
}

Das Problem ist, ich muss angeben, auf welche Anzeige der bestimmten Ansicht sie angewendet werden soll, und nicht auf die gesamte Ansicht selbst. Ich habe versucht, die $ vars auszudrucken, was zu einem riesigen wiederkehrenden Array führt, das anscheinend nirgendwo den Anzeigenamen enthält.

Mir ist auch bewusst, dass Sie dies durch Markieren in der Benutzeroberfläche der Ansichten tun. Das gleiche Problem tritt jedoch auf - ich kann einer bestimmten Anzeige einer Ansicht kein Tag hinzufügen.

Wenn es einen anderen Weg gibt, wie ich das erreichen kann, bin ich ganz Ohr!

Antworten:


15

Sie können die Anzeige-ID über die current_displayEigenschaft des View-Objekts abrufen, z

$view = $vars['view'];
if ($view->name == 'foo' && $view->current_display == 'bar') {
  // ...
}

Oh shhh ... wie habe ich das nicht gesehen? Vielen Dank!
Chris

1
Heh heh, ich muss das über hundert Mal benutzt haben und ich suche immer noch display_nameoder display_idjedes Mal ...
Clive

Jetzt habe ich das Problem, dass es meine Vorlage nicht aufnimmt, aber das ist eine andere Frage ...
Chris

3
In Drupal 8 würden Sie $view->id()stattdessen den Eigenschaftsnamen verwenden
Anonym-Entwickler
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.