我正在主题化一个节点窗体。我希望通过身份验证的用户拥有尽可能少的字段,而我作为管理员希望查看所有字段。如何编写一个php if语句来检查当前登录用户是否是管理员?Drupal - 按角色显示节点窗体对象的可见性
0
A
回答
0
global $user;
// Check to see if $user has the administrator role.
if (in_array('administrator', array_values($user->roles))) {
// Do something.
}
当节点上,也有一个$is_admin
变量可用(如果不知道它在总是的情况下)。有关用户的更多信息,$user
阵列将容纳所有需要的信息
0
这里似乎有些不明确之处。您可以在主题模板中使用上述代码来控制最终用户的字段显示。它不会影响内容编辑或创建表单中字段的显示。为此,您可能需要使用field_permissions(cck的一部分),它基于角色限制对字段的访问。
0
0
控制用户通过主题层看到哪些字段是非标准做法。最好是正确使用访问控制系统,这样其他开发人员将知道如何针对自己的更改再次调整事务。
我将创建与下面的代码模块:
<?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找到指导。如果您愿意通过Form结构完整打印出来,请在您的hook_form_alter()实现中粘贴drupal_set_message(print_r($form, TRUE));
以查看其中的内容。更好的是,安装Devel,然后通过插入dpm($form);
可以获得更好的主题输出。
相关问题
- 1. 按角色阻止可见性
- 2. 窗体不显示为Drupal 7中的节点/内容类型
- 3. 从子窗体中更改主窗体按钮的可见性
- 4. 在COM可见DLL中显示窗体
- 5. 将对象的可见性展示给另一个对象的可见性
- 6. 按角色可访问的Drupal部分
- 7. Drupal的8 - 管理 - 显示该角色
- 8. Drupal - 灯箱 - > iframe节点显示整个网站的意见
- 9. Drupal - 块可见性
- 10. Android对象的可见性
- 11. ASP.NET对象的可见性
- 12. 如何在Windows窗体中单击按钮时显示对象的属性?
- 13. Drupal显示节点的修改日期
- 14. Drupal - 显示块内节点的标题
- 15. C#groupbox在窗体中的可见性
- 16. 切换窗体元素的可见性
- 17. Rails窗体对象显示动作
- 18. 以编程方式在Drupal 7中按角色设置显示
- 19. 节点js窗口对象
- 20. 复选框正在改变可见性/显示多个对象
- 21. Drupal显示节点注释的节点的视图
- 22. Drupal:搜索评论节点,并显示父节点的结果?
- 23. 用Drupal 6显示节点内的节点
- 24. 水平显示Drupal Teaser节点
- 25. Drupal 7改变节点显示
- 26. Drupal节点在存在时显示404
- 27. Drupal 6:排序显示节点引用
- 28. Drupal 7 - 节点自定义显示
- 29. Drupal 6:如何显示节点?
- 30. Windows窗体可见性问题
难道这是作为一个片断? – Toxid 2010-07-06 11:28:22
嗯,只是尝试;),它应该工作,但要记住在每个页面上使用它很难维护,所以一个模块/功能/ ..将是这样一个更好的解决方案 – DrColossos 2010-07-06 11:42:25