Drupal, использующий представления с пользовательскими полями CCK - PullRequest
1 голос
/ 29 марта 2010

У меня есть сайт Drupal, который использует настраиваемое поле для определенного типа узла (person_id), который соответствует конкретному пользователю. Я хочу создать представление, чтобы при входе в систему пользователь мог видеть список узлов, помеченных их person_id. У меня нормально работает представление с URL-адресом my-library/username, но при замене username на другое имя пользователя отображается список всех узлов, помеченных этим пользователем. Я хочу, чтобы пользователи не меняли URL и не видели узлы других пользователей. Как я могу это сделать? Есть ли где-то, где я могу диктовать, что единственным допустимым аргументом для этой страницы является тот, который соответствует текущему зарегистрированному имени пользователя?

Ответы [ 2 ]

2 голосов
/ 30 марта 2010

person_id = uid? В этом случае добавьте аргумент user: uid, затем в параметрах проверки выберите PHP Code, внимательно прочитайте комментарий к этому полю:

Введите код PHP, который возвращает TRUE или ЛОЖНЫЙ. Нет возврата так же, как FALSE, так что не забудьте вернуть что-то, если вы не хочу объявлять аргумент недействительным. Не использовать . аргумент для проверки будет «$ аргумент» и представление будет "$ Вид". Вы можете изменить аргумент установив "$ handler-> аргумент".

Добавить этот код:

global $user;
$account = user_load('name'=>arg(1));
$handler->argument = $user->uid;
return $account->uid == $user->uid;
1 голос
/ 29 марта 2010

Я не уверен, как вы настроили свой вид, который дает несколько разных вариантов для решения этой проблемы. Способ, который должен работать, состоял бы в том, чтобы установить аргумент по умолчанию - идентификатор зарегистрированного пользователя / имя пользователя и удалить аргумент из URL.

В качестве альтернативы вы можете создать свой собственный фильтр, который требует некоторой работы с API представлений, но дает больший контроль.

...