Drupal 6, Просмотры 2: Можно ли иметь фильтр, который применяется только к зарегистрированным пользователям?

Можно ли создать фильтр в представлении Drupal 6, который будет применяться только для зарегистрированных пользователей?

Для одного фильтра, который мне нужен, я использую голосование пользователя (с пятью звездами и голосование), чтобы узнать, проголосовал ли пользователь уже за этот узел или нет, и когда пользователь анонимен, работает так, как если бы все голоса от всех анонимных пользователей, где из того же. Вот почему мне нужно добавить этот фильтр, но игнорировать его, если пользователь анонимен.

Заранее большое спасибо за помощь!


person Daniel Rodríguez    schedule 08.04.2010    source источник


Ответы (1)


Если вам нравится php, загрузите модуль Views PHP Filter (http://drupal.org/project/viewsphpfilter). Этот модуль позволяет вам легко писать свои собственные фильтры для любого представления.

После загрузки и включения модуля создайте новое представление и добавьте фильтр «Node: Node ID PHP handler». Теперь вы можете добавить собственный php-код для любого фильтра. Возможно что-то вроде:

global $user;
$allowed = array('authenticated user');
foreach ($user->role as $role) {
  if (in_array($role, $allowed)) {
    $nids = //Run custom filter query for allowed users
  }
  else {
    $nids = //Run alternate filter query for anonymous users 
  }
}
return $nids;

Код должен возвращать список идентификаторов узлов для отображения.

person draenen    schedule 21.04.2010