На сайте есть две похожие роли - обычные юзеры и VIP. Вторые при создании ноды могут использовать дополнительный набор полей.
Задача - сделать такую вьюху, которая будет выводить дополнительные поля только только при условии, что у автора ноды роль VIP. То есть если автор по каким-то причинам стал обычным юзером, дополнительные поля перестают выводится.
PS Характерный пример - каталог фирм, когда бесплатно размещают только название, а за деньги - адрес и ссылку на сайт.
Комментарии
С ходу могу предложить темизацию шаблона views — сделать вывод в том виде, как для vip, а потом в шаблоне обернуть те поля, которые могут видеть только випы в if с нужным условием.
http://drupal.org/project/views_php
А как будет выглядеть условие с ролью автора и куда его во Views вписывать? Я просто методом тыка уже пробовал - не получилось. Вероятно, не туда тыкаю.
Его нужно не во views методом тыка, а в шаблон для нужного вам вьюса. Почитайте про темизацию Views, там всё достаточно просто.
Что до проверки, то выполнить её можно так:
<?php
// Вытаскиваем на свет $user
global $user;
// Проверяем, входит ли пользователь в группу vip
if (in_array('vip', array_values($user->roles))) {
// Показываем нужные ячейки
print "blah-blah-blah";
}
?>
С темизацией вроде разобрался, но застрял на получении uid автора ноды.
Насколько я понимаю, для начала надо вытащить ID самой ноды, потом по ней посмотреть автора. Сделал скрытое поле Nid и надеялся его использовать как-то так:
$Node_ID=$view->{$field->Nid};
однако получаю "Cannot access empty property"
Сделайте проще. Во вьюс можно сразу вытаскивать uid автора ноды:
1. Кликните на знаке «+», чтобы добавить новое поле;
2. В выпадающем списке выберите User (или Пользователь, если у вас локализован Друпал);
3. Выберите из списка UID.
То ли я не там ищу, то ли вы про другую версию Drupal
У меня 7.
Нашёл поля Пользователь:Роль, Пользователь:Имя аутентификации и Пользователь: Authmap ID
Но похоже они глючат. Даже при попытке их просто вывести во вьюху, Пользователь:Роль не выдаёт ничего, а две других выдают ошибку MySql типа "Unknown column 'authname' in 'field list'"
Ещё наковырял. Если добавить во вьюху взаимосвязь (relationship) Содержимое-Автор, то появляются новые поля - в частности, uid.
И оно работает, в смысле на экран выводится.
Осталось теперь как-то получить это значение не на экране, а в коде.
Сорри, я действительно про другую версию — Друпал 6.
Так оно уже есть в коде. С помощью модуля devel можно посмотреть, что доступно для вывода, и использовать это в коде.
Что-то у меня Devel на страницах вьюх вообще не присутствует, только на отдельных нодах
В конце концов сделал через Views PHP, как рекомендовал xxandeadxx
Код поля выглядит приблизительно так (цифра 4 в условном операторе соответствует роли VIP)
<?php
$result =db_query("SELECT rid FROM {users_roles} WHERE uid = '$row->uid' ")->fetchField();
if ( $result =='4')
{ print $row->name; }
?>