Drupal视图-如何返回有关正在渲染的视图的信息

Drupal视图-如何返回有关正在渲染的视图的信息,drupal,views,Drupal,Views,我在处理Drupal中视图模块的挂钩时遇到问题。我要做的是确定渲染哪个视图,以便识别它并对其进行更改。瞧,我不知道我在研究哪种观点 在下面的代码中,我将实际的模块名替换为“MODULENAME” 在.module文件中,我包含了一个MODULENAME.views.inc文件,其中包含以下内容: include_once ( dirname(__FILE__) . '/MODULENAME.views.inc'); 在.views.inc文件中,我有一个MODULENAME_views

我在处理Drupal中视图模块的挂钩时遇到问题。我要做的是确定渲染哪个视图,以便识别它并对其进行更改。瞧,我不知道我在研究哪种观点

在下面的代码中,我将实际的模块名替换为“MODULENAME”

在.module文件中,我包含了一个MODULENAME.views.inc文件,其中包含以下内容:

    include_once ( dirname(__FILE__) . '/MODULENAME.views.inc');
在.views.inc文件中,我有一个MODULENAME_views_api函数,如下所示:

    function MODULENAME_views_api() {
      return array('api' => 2, 'path'=> drupal_get_path('module', 'MODULENAME'),
      );
    }
那些似乎很好用。所以,现在我试着用一个真正的钩子开始做生意

    function MODULENAME_views_pre_render(&$view) {
      $get_view_info = $view->name;
      echo $get_view_info;
    }

    MODULENAME_views_pre_render();
问题是这会引发一个错误,“MODULENAME\u views\u pre\u render()缺少参数1

所以,很明显,它希望我传入某种标识符来告诉它我想要哪个视图。但这就是这个函数的全部目的是确定呈现哪个视图。如果我知道答案,那么我就不需要首先调用这个函数


我是否遗漏了一些明显的东西?是否有一个函数调用可以用来返回此标识符?

您可以通过实现钩子来钩住东西,因此这部分代码是正确的:

<?php
function MODULENAME_views_pre_render(&$view) {
  $get_view_info = $view->name;
  echo $get_view_info;
}

您通过实现钩子来钩住事物,因此这部分代码是可以的:

<?php
function MODULENAME_views_pre_render(&$view) {
  $get_view_info = $view->name;
  echo $get_view_info;
}

更清楚地说,我想问的是,是否有方法获取已请求视图的所有参数的数组?如视图ID、参数、显示信息等?更清楚地说,我想问的是,是否有方法获取已请求视图的所有参数的数组?如视图、参数、显示信息等?Alexander,谢谢你的详细回答。但是,我仍然不清楚它。我在D7上使用Views 3。问题是,每当呈现视图时,我都想实现一个函数;不管它是哪一个。瞧,我事先不知道它是哪一个视图。所以,我想我之所以要问题是这些钩子期望我将$view对象作为参数加载到函数中。所以我想我需要一种在创建视图时启动该对象的方法,以便我可以将该对象传递到这些函数中,对吗?我想我正在寻找类似hook_init()的东西,但对于视图。因此,每次创建视图时,它都会启动此函数,我可以获取视图的ID及其参数,以便在我的模块中使用。好的,Alexander,玩了两天之后,它上的灯泡终于亮了。&$视图是一个引用,函数会自动调用。所以我没有而是运行这个(或任何其他)函数和变量都是在这一点上设置的。谢谢你的帮助。Alexander,谢谢你的详细回答。但是,我仍然在研究它。我在D7上使用Views 3。问题是,每当呈现视图时,我都想实现一个函数;不管它是哪一个。瞧,我事先不知道它是哪一个视图。所以,我我遇到问题的原因是,这些钩子希望我将$view对象作为参数加载到函数中。因此,我想我需要一种在创建视图时启动该对象的方法,以便我可以将该对象传递到这些函数中,对吗?我想我正在寻找类似hook_init()的东西,但对于视图。因此,每次创建视图时,它都会启动此函数,我可以获取视图的ID及其参数,以便在我的模块中使用。好的,Alexander,玩了两天之后,它上的灯泡终于亮了。&$视图是一个引用,函数会自动调用。所以我没有而是运行这个(或任何其他)函数,并在该点设置变量。谢谢您的帮助。
<?php
function MODULENAME_views_pre_render(&$view) {
  if ($view->name == 'TheViewIWantToModify') {
      // Make some changes to the $view
  }
}