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

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

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

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

1 Ответ

2 голосов
/ 21 апреля 2010

Если вам не безразличен php, скачайте модуль PHP-фильтра Views (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;

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

...