如何使用template_preprocess_views_view将变量传递到views 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; ?>

...但是没有喜悦。我究竟做错了什么?

Answers:


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'),然后在管理端将其再次转换。这是我要避免的事情(但我已经翻译了该View ...)。
Artur 2012年

0

如果我没记错,您可以将标题与视图对象一起传递,请在视图对象内添加一个新变量,然后在模板文件中添加ust。


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;

只需自己完成此操作即可,效果很好。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.