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!

Chris
quelle

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') {
  // ...
}
Clive
quelle
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