如何从用户视图中删除匿名用户

时间:2010-07-30 10:36:17

标签: drupal drupal-6 drupal-views

我有一个显示我网站用户的视图。

如何从我的视图中删除匿名用户?

即。 35 作者 16 选民 0 匿名 0 user34

我尝试使用过滤器“User:Name!= Anonymous”,但它不起作用。

这是添加的过滤器的样子:“用户:名称不在未知”

感谢

2 个答案:

答案 0 :(得分:1)

添加过滤器用户:名称,并将其设置为不是之一。键入Anonymous并等待表单自动完成以查找匿名用户。您的过滤器应该类似于用户:名称<>匿名

这是一个View的导出,列出除Anonymous之外的所有用户:

$view = new view;
$view->name = 'users';
$view->description = '';
$view->tag = '';
$view->view_php = '';
$view->base_table = 'users';
$view->is_cacheable = FALSE;
$view->api_version = 2;
$view->disabled = FALSE; /* Edit this to true to make a default view disabled initially */
$handler = $view->new_display('default', 'Defaults', 'default');
$handler->override_option('fields', array(
  'name' => array(
    'label' => 'Name',
    'alter' => array(
      'alter_text' => 0,
      'text' => '',
      'make_link' => 0,
      'path' => '',
      'link_class' => '',
      'alt' => '',
      'prefix' => '',
      'suffix' => '',
      'target' => '',
      'help' => '',
      'trim' => 0,
      'max_length' => '',
      'word_boundary' => 1,
      'ellipsis' => 1,
      'html' => 0,
      'strip_tags' => 0,
    ),
    'empty' => '',
    'hide_empty' => 0,
    'empty_zero' => 0,
    'link_to_user' => 1,
    'overwrite_anonymous' => 0,
    'anonymous_text' => '',
    'exclude' => 0,
    'id' => 'name',
    'table' => 'users',
    'field' => 'name',
    'relationship' => 'none',
  ),
));
$handler->override_option('filters', array(
  'uid' => array(
    'operator' => 'not in',
    'value' => array(
      '0' => 0,
    ),
    'group' => '0',
    'exposed' => FALSE,
    'expose' => array(
      'operator' => FALSE,
      'label' => '',
    ),
    'id' => 'uid',
    'table' => 'users',
    'field' => 'uid',
    'relationship' => 'none',
  ),
));
$handler->override_option('access', array(
  'type' => 'none',
));
$handler->override_option('cache', array(
  'type' => 'none',
));

答案 1 :(得分:1)

如果您的数据库中没有用户0,那么这就是问题的原因。要修复它,您需要运行两个查询。

INSERT INTO users (uid) VALUES (0);
UPDATE users SET uid = 0 WHERE uid = last_insert_id();

(这是针对MySQL)。

对于使用uid的空用户的特殊情况,您可以运行:

UPDATE users SET uid = 0 WHERE uid = 11;

那应该解决你的问题。可能是您的db版本不支持last_insert_id()