2010-03-29 5 views
1

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

ответ

1

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

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

2

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

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

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

global $user; 
$account = user_load('name'=>arg(1)); 
$handler->argument = $user->uid; 
return $account->uid == $user->uid;