У меня есть сайт Drupal, который использует настраиваемое поле для определенного типа узла (person_id
), которое соответствует определенному пользователю. Я хочу создать представление, чтобы при входе в систему пользователь мог видеть список «помеченных» узлов с их person_id
. У меня есть представление, работающее нормально, с адресом my-library/username
, но вместо username
с другим именем пользователя отображается список всех узлов, помеченных этим пользователем. То, что я хочу сделать, - это запретить пользователям изменять URL-адрес и видеть тегированные узлы других пользователей. Как я могу это сделать? Есть ли где-нибудь, где я могу диктовать, что единственным действительным аргументом для этой страницы является тот, который соответствует текущему имени пользователя в журнале?Drupal с использованием представлений с пользовательскими полями CCK
ответ
Я не уверен, как вы настроили свой вид, который дает несколько разных вариантов для решения этой проблемы. Способ, который должен работать, заключается в том, чтобы установить аргумент по умолчанию для имени пользователя/имени пользователя в журнале и удалить аргумент из URL-адреса.
В качестве альтернативы вы можете создать свой собственный фильтр, который требует некоторой работы с API-интерфейсом views, но дает больше контроля.
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;