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