Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Drupal 以编程方式将内容类型筛选器添加到现有视图_Drupal_Drupal 6_Drupal Views_Drupal Modules - Fatal编程技术网

Drupal 以编程方式将内容类型筛选器添加到现有视图

Drupal 以编程方式将内容类型筛选器添加到现有视图,drupal,drupal-6,drupal-views,drupal-modules,Drupal,Drupal 6,Drupal Views,Drupal Modules,我对视图相当陌生,希望以编程方式修改现有视图。这件艺术品很有帮助,但我不知道如何根据我的需要定制它 我需要修改视图并添加内容类型筛选器。有人能帮忙吗?我想你最好的办法是在中添加一个,以限制到特定的节点。键入。您可以检查$view以确定是否正在调用您的视图,然后使用$query对象添加约束。不幸的是,视图钩子的文档很少,您经常需要查看实际的模块源代码,以了解实际发生的情况。我只是这样做的,通过编程向现有视图添加了语言过滤器。下面是我如何处理它的 在视图界面(admin/build/views)中,

我对视图相当陌生,希望以编程方式修改现有视图。这件艺术品很有帮助,但我不知道如何根据我的需要定制它


我需要修改视图并添加内容类型筛选器。有人能帮忙吗?

我想你最好的办法是在
中添加一个
,以限制到特定的
节点。键入
。您可以检查
$view
以确定是否正在调用您的视图,然后使用
$query
对象添加约束。不幸的是,视图钩子的文档很少,您经常需要查看实际的模块源代码,以了解实际发生的情况。

我只是这样做的,通过编程向现有视图添加了语言过滤器。下面是我如何处理它的

在视图界面(admin/build/views)中,选择您的视图并通过web界面添加过滤器。正确设置后,导出视图。您将在php代码中获得一个大数组。在数组中找到您的过滤器,并将其复制粘贴到临时文本文件中以供将来参考

现在,在代码中,执行以下操作:

// Load the view by specifying its name (as displayed at admin/build/views
$view = views_get_view('name_of_view');
// Specify the display you are editing - you can see this at admin/build/views/edit/name_of_view.
// Usually it's something like 'page' or 'block' or 'default'
$display = 'default';
$view->view_set_display($display);
// Now load up an available filter. You must do this step - it's the equivalent of
// clicking 'add' in the interface.
// filter_name is the same as what is specified in your export from before. 
$filter_name = 'language';
$filter = $view->get_item($display, 'filter', $filter_name);
// Now set the arguments. This will need to match what is in your export from before...
$filter['value']['***CURRENT_LANGUAGE***'] = '***CURRENT_LANGUAGE***';
// ...and save the filter.
$view->set_item('default', 'filter', 'language', $filter);
这对我很有效。以下是我的视图导出的相关摘录供参考:

'language' => array(
    'operator' => 'in',
'value' => array(
  '***CURRENT_LANGUAGE***' => '***CURRENT_LANGUAGE***',
),
'group' => '0',
'exposed' => FALSE,
'expose' => array(
  'operator' => FALSE,
  'label' => '',
),
'id' => 'language',
'table' => 'node',
'field' => 'language',
'override' => array(
  'button' => 'Override',
),
 'relationship' => 'none',
),

Cam,你在上面做的是什么钩子功能?我在一个钩子安装实现中做的,这样我们的实时站点上的视图在部署时得到了正确的更新。