如何在 Drupal 7 的搜索结果中排除用户 1 或超级管理员?

问题描述 投票:0回答:2

我正在寻找一种从 drupal 7 中的用户搜索结果中排除管理员用户或用户 1 的方法。

出于安全原因,我希望它不会显示。

php drupal drupal-7
2个回答
2
投票

如果您使用视图构建自定义搜索,则可以将过滤器设置为仅显示具有特定角色的用户。 请勿将过滤器暴露给用户。 如果用户 1 具有“管理员”角色,而其他人都具有另一个(非管理员)角色,则当您应用过滤器时,运行搜索时只会显示非管理员帐户。


0
投票

您可以通过将以下内容插入到 template.php 中来实现 hook_preprocess_search_result()。请注意,您必须清除 Drupal 缓存才能在配置 -> 性能 -> 清除缓存中启用此功能

function <themename>_preprocess_search_result(&$variables) {
  global $language;

  $display_result = true;

  if( $variables['module'] == 'user' ) {
    if( $variables['user']->uid == 1 || $variables['id'] == 1 ) {
      $display_result = false;
      $variables = array();
    }
  }

  if( $display_result ) {
      $result = $variables['result'];
      $variables['url'] = check_url($result['link']);
      $variables['title'] = check_plain($result['title']);
      if (isset($result['language']) && $result['language'] != $language->language && $result['language'] != LANGUAGE_NONE) {
        $variables['title_attributes_array']['xml:lang'] = $result['language'];
        $variables['content_attributes_array']['xml:lang'] = $result['language'];
      }

      $info = array();
      if (!empty($result['module'])) {
        $info['module'] = check_plain($result['module']);
      }
      if (!empty($result['user'])) {
        $info['user'] = $result['user'];
      }
      if (!empty($result['date'])) {
        $info['date'] = format_date($result['date'], 'short');
      }
      if (isset($result['extra']) && is_array($result['extra'])) {
        $info = array_merge($info, $result['extra']);
      }
      // Check for existence. User search does not include snippets.
      $variables['snippet'] = isset($result['snippet']) ? $result['snippet'] : '';
      // Provide separated and grouped meta information..
      $variables['info_split'] = $info;
      $variables['info'] = implode(' - ', $info);
      $variables['theme_hook_suggestions'][] = 'search_result__' . $variables['module'];
  }
}

另一种方法是 search-result.tpl.php 并检查

$info_split
数组以检查搜索结果是否为用户 1 并且不显示任何输出。

不要忘记,您还需要阻止用户访问 site.com/user/1,因为他们能够从此页面获取同样多的信息。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.