Как использовать template_preprocess_views_view для передачи переменной в файл представления TPL


8

Так как этот случай снова произошел со мной недавно, я решил задать вопрос, чтобы, возможно, что-то узнать.

В соображениях главный тайтл дисплей (тот , который обычно визуализируется в верхней части представления) в выходной дисплей , как , $titleно , похоже, не будет доступна в выходе стиля вообще. Вместо этого $titleпеременная в выводе стиля означает имя группы, если используется группировка.

Я хочу, чтобы этот отображаемый заголовок («человеческое имя») был доступен в любом шаблоне как $display_title. Так что я сделал, поместив этот код в мой template.php:

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);
}

... в надежде иметь человеческое название под рукой: <?php print $display_title; ?>

... но не радость. Что я делаю неправильно?

Ответы:


10

Как вы также знаете, представление имеет несколько шаблонов, которые могут варьироваться в зависимости от стиля, например:

  • Показать вывод: views-view.tpl.php
  • Стиль вывода: views-view-STYLE.tpl.php
  • Вывод стиля строки: views-view-fields.tpl.php
  • Содержание поля: views-view-field.tpl.php

и т.п.

Каждый из этих шаблонов имеет свою функцию предварительной обработки. То, что вы делаете в своем коде, влияет только на вывод изображения, так как вы предварительно обрабатываете только views-view.tpl.php ( template_preprocess_views_view)

Чтобы узнать, какие файлы шаблонов доступны для вашего конкретного представления, вы можете перейти на страницу редактирования и в разделе «Дополнительно» в конце столбца нажать «Тема: Информация». Вы увидите, какие файлы шаблонов использует ваше представление (выделено жирным шрифтом) и какие файлы шаблонов вы бы использовали для их переопределения.

Функции препроцессора должны быть названы в честь файла шаблона, заменяя черты подчеркиванием. Например, для views-view-STYLE.tpl.phpбудет template_preprocess_views_view_STYLE().


0

Вы можете использовать функции:

  1. drupal_set_title ()

    Устанавливает заголовок текущей страницы.

  2. drupal_get_title ()

    Получает заголовок текущей страницы.


Спасибо, но мой взгляд генерирует блок, а не страницу, так что это не решение. Более того, для этого потребуется передать строковый аргумент, как, t('My Views Title')а затем перевести его снова на стороне администратора. Чего я хочу избежать (тем не менее, я уже перевел это представление ...).
Артур

0

Если я правильно помню, вы можете передать заголовок с объектом представления, добавить новую переменную внутри объекта представления и просто в файл шаблона.


0

Чтобы ответить на конкретный вопрос «передать переменную в файл шаблона» ... Я думаю, что вам просто нужно использовать другой хук. Присоедините переменную к вашему $viewобъекту так:

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

Затем в файле шаблона, например views-view--NAME_OF_VIEW--page.tpl.php:

print $view->display_title;

Просто должен был сделать это сам, и это сработало отлично.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.