Я занимаюсь оформлением формы узла. Я хочу, чтобы у аутентифицированных пользователей было как можно меньше полей, а я, как администратор, хочу видеть все поля. Как написать инструкцию php if, которая проверяет, является ли текущий зарегистрированный пользователь администратором?Drupal - видимость объектов в виде объектов по ролям
ответ
global $user;
// Check to see if $user has the administrator role.
if (in_array('administrator', array_values($user->roles))) {
// Do something.
}
Когда на узлах, есть также $is_admin
переменная доступна (не уверен, если это в всегда случай). Для получения дополнительной информации о пользователе, массив $user
сохранит всю необходимую информацию
Здесь, кажется, есть некоторая двусмысленность. Вы можете управлять отображением полей конечным пользователям, используя приведенный выше код в шаблоне темы. Это не повлияет на отображение полей в редактировании содержимого или создании форм. Для этого вы, скорее всего, захотите использовать field_permissions (часть cck), которая ограничивает доступ к полям на основе роли.
Это нестандартная практика, чтобы контролировать, какие поля пользователь видит через слой со слоями. Лучше правильно использовать систему контроля доступа, таким образом, другие разработчики будут знать, как настраивать вещи снова для своих изменений.
Я хотел бы создать модуль со следующим кодом:
<?php
/**
* Implementation of hook_form_alter().
*/
function custommodule_form_alter(&$form, &$form_state, $form_id) {
global $user;
// All node forms are built with the form_id "<machine_name>_node_form"
if (substr($form_id, -10) != '_node_form') {
// Only making changes on the node forms.
return;
}
// Make the menu field invisible to those without the administrator role.
// This will hide the menu field from users with the user permissions to make changes.
// Remember 'administrator' is not a default role in Drupal. It's one you create yourself or install a module (like Admin Role*)
$form['menu']['#access'] = in_array('administrator', array_values($user->roles));
// This approach allows me to tie access to any permission I care to name.
// This specifically limits the menu field to menu administrators.
$form['menu']['#access'] = user_access('administer menu');
}
?>
Используя этот подход, форма не будет просто строить те элементы, что текущий пользователь не может получить доступ.
Если вы хотите узнать о элементах формы на странице формы узла, вы можете найти руководство через Google. Если вы захотите пропустить полную распечатку из структуры формы, вставьте в нее drupal_set_message(print_r($form, TRUE));
в вашей реализации hook_form_alter(), чтобы увидеть, что там есть. Еще лучше, установите Devel, а затем вы можете получить более приятный тематический вывод, вставив dpm($form);
.
- Узнайте о Forms API: Forms API Quickstart Guide, Forms API Reference
- Admin Role
- 1. Видимость объектов по потокам
- 2. Drupal Пользовательский логин по ролям
- 3. Раздел Drupal, доступный по ролям
- 4. Видимость измененных объектов объекта
- 5. Ограничить доступ к просмотру Drupal по ролям
- 6. Видимость и наследование объектов PHP
- 7. JFrame.pack(), содержащий несколько объектов Graphics2D, блокирует видимость содержащихся объектов
- 8. Перемещение объектов в виде списка
- 9. Видимость внутри класса объектов создаются локально
- 10. Отображение области просмотра Drupal Views html объектов
- 11. Смена галочки Видимость/отображение нескольких объектов
- 12. Drupal 6.x отправляет разные приветственные письма пользователям по ролям
- 13. Drupal - проверка безопасности всех путей сайта по ролям
- 14. Django как перебирать список объектов в виде?
- 15. HTML-компоненты, завернутые в виде объектов Java?
- 16. Удаление основных объектов данных в виде таблицы
- 17. Drupal - видимость блока
- 18. Как отсортировать массив объектов по атрибуту объектов?
- 19. Рекомендации по перекрытию объектов объектов/типов данных
- 20. Сортировка массива объектов по значению объектов
- 21. Сортировка массива объектов по полям объектов
- 22. Фильтровать пользователей по ролям
- 23. Олицетворение ASP.NET по ролям
- 24. C++ сортировка массива объектов в общем виде
- 25. Обновление объектов пользовательского интерфейса в виде окон
- 26. Отображение объектов в виде выбора внутри шаблона
- 27. SpringMVC - Отображение объектов в виде: варианты
- 28. Повторные экземпляры объектов домена в виде карты
- 29. Поиск по ролям Fosu
- 30. Разрешения 2sxc по ролям
Может ли это быть использовано в качестве сниппета? – Toxid
Ну, просто попробуйте это;), он должен работать, но имейте в виду, что на каждой странице трудно поддерживать, поэтому модуль/функция/.. будет лучшим решением в таком acase – DrColossos