Как исключить пользователя 1 или супер администратора из результатов поиска в Drupal 7? - PullRequest
0 голосов
/ 10 августа 2011

Я ищу способ исключить администратора или пользователя 1 из результатов поиска пользователей в drupal 7.

Я хочу, чтобы это не отображалось по соображениям безопасности.

Ответы [ 2 ]

2 голосов
/ 09 сентября 2012

Если вы создаете пользовательский поиск с использованием представлений, вы можете установить фильтры, чтобы показывать только пользователей с определенными ролями.Не подвергайте фильтр пользователям.Если пользователь 1 имеет роль «администратор», а все остальные имеют другую (не администраторскую) роль, то при применении фильтра только учетные записи не администратор будут отображаться при запуске поиска.

0 голосов
/ 27 ноября 2011

Вы можете реализовать hook_preprocess_search_result () , вставив следующее в template.php.Обратите внимание, что вам нужно очистить кеш 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, чтобы проверить, был ли результат поиска пользовательским, и не отображать какие-либо выходные данные.

Не забывайте, что вам также нужно запретить пользователям посещать site.com/user/ 1, поскольку они смогут получить столько же информации с этой страницы.

...