在Drupal 7中如何检查节点作者是否具有某个角色? -- nodes 领域 和 theming 领域 drupal 相关 的问题

In Drupal 7 how do I check if a node author has a certain role?


-1
vote

问题

中文
具体来说,我有自定义节点。dpl.php名为nodegiond.tpl.php工作很大。 现在如何找出节点作者是否具有"premium_user" 角色,因此节点将具有高级风格功能。 我已经看到了一个关于检查当前用户的帖子:
  global $user;  if (in_array('authenticated user', $user->roles)) {      //do fancy style stuff here }   

我想为$ uid做同样的事情(在node.tpl.php中,它说是节点作者的用户标识的变量)。 任何帮助感激。 谢谢 弗兰克

英文原文

Specifically, I have custom node.tpl.php called node--directory.tpl.php works great. Now how do find out if the node author has the role 'premium_user', so that node will have premium style features. I have seen a post about checking the current user for a role:

global $user;  if (in_array('authenticated user', $user->roles)) {      //do fancy style stuff here } 

I want to do the same for $uid (in node.tpl.php it says that is variable for the user id of the node author). Any help appreciated. Thanks Frank

     

回答列表

0
 
vote

global $user 将为您提供有关当前登录用户的信息,而不是关于节点作者。

要获取节点作者,您应该使用节点模板。以下是检查作者角色的示例代码(未经测试),
  $author = user_load($uid); if (in_array('premium_user', $author->roles)) {   //do fancy style stuff here }   
 

global $user will give you the information about currently logged in user not about the node author.

To get the node author, you should use the $uid variable which is available in the node template. Below is the sample code(untested) for checking the author's role,

$author = user_load($uid); if (in_array('premium_user', $author->roles)) {   //do fancy style stuff here } 
 
 
   
   
0
 
vote

您可以使用此自定义功能。只需将此放在自定义模块中,或者在 template.php 文件:

  function user_has_role($role, $user = null) {   if ($user == NULL) {     global $user;   }    if (is_array($user->roles) && in_array($role, array_values($user->roles))) {     return true;   }    return false; }   

可以使用这样:

  // How to use it for current logged in user $role = 'myrole'; if (user_has_role($role)) {   // Do something }  // How to use it for x user $role = 'myrole'; $user = user_load($uid); if (user_has_role($role, $user)) {   // Do something }   
 

You can use this custom function. Just place this it in a custom module, or in your template.php file :

function user_has_role($role, $user = null) {   if ($user == NULL) {     global $user;   }    if (is_array($user->roles) && in_array($role, array_values($user->roles))) {     return true;   }    return false; } 

You can use like this :

// How to use it for current logged in user $role = 'myrole'; if (user_has_role($role)) {   // Do something }  // How to use it for x user $role = 'myrole'; $user = user_load($uid); if (user_has_role($role, $user)) {   // Do something } 
 
 
0
 
vote

为更粒度的方法,建议使用 user_access()而不是角色。

您必须实现自己的权限,但是控制哪个角色将来的权限有很多灵活性。

 

For a more granular approach, recommend checking for permissions using user_access() instead of roles.

You'll have to implement your own permissions but it's much flexible to control which role has which permissions in the future.

 
 

相关问题

2  在视图模式下在自节点中的视图模式x中显示渲染节点  ( Display rendered node in view mode x in self node in view mode y ) 
如何在不同的视图模式下自身渲染节点? ...

9  如何在jQuery / JavaScript中获取节点ID  ( How to get the node id in jquery javascript ) 
是否有明确的,普遍的方式来做这件事?例如,使用 Drupal.behaviours 的某些环境变量? 我已经完成了一些研究,似乎没有共同的答案。 ...

2  如何删除管理员菜单中节点的视图/编辑选项?  ( How to remove view edit option of a node in admin menu ) 
drupal 7节点编辑和视图显示在Admin菜单中。如何在节点标题下显示它? 实际上在加载节点时,节点的视图编辑选项在节点标题下显示,但在完全加载时,该节点的视图/编辑选项显示在管理员菜单中。 当我用Firebug检查它时,它在管理员菜单CSS下。 如何在节点标题下显示视图/编辑选项? ...

1  使用相同类别获取节点(分类项)当前节点正在使用  ( Get a node using the same category taxonomy term the current node is using ) 
我有两种类型的节点: News 和页面。 每个新闻节点可以分配给一个类别(分类项),也可以从页面节点使用。 我想进入一个查看当前节点具有相同类别的新闻节点。 如何实现这一目标? ...

4  标题字段输入未在模块创建内容类型时出现  ( Title field input not appearing when creating content type by module ) 
我有这个问题,我正在通过创建模块创建内容类型,使用示例项目的示例'node_example'作为代码模板。这是我得到它的工作,我成功创建内容类型,但是当我创建该内容类型的新节点时,所有字段都会出现但标题。我有点丢失了。我把自己放在hook_node_info()上的propperty'has_title',但它保持不...

1  从节点字段值的集合日期清除缓存  ( Clear cache on view at a set date from a node field value ) 
清除节点日期字段设置为确切日期和时间的最佳方法是清除DRUPAL缓存的最佳方法?它很容易在节点保存时执行此操作,但如果节点要在特定时间设置为日期字段的特定时间,那么我需要立即在与日期对应的特定时间设置要清除的缓存节点上的字段值? ...

0  不同页面上的相同辅助菜单栏并导致不同的内容  ( Same secondary menu bar on different pages and lead to different content ) 
不确定我是否可以清楚地描述这种情况,这是事情: 我使用d7。我有这个网站:主菜单中有三个菜单项将导致三个产品页面,它们的布局将是相同的:从产品映像开始,然后是辅助菜单栏和根据辅助选择的菜单项的内容。我打算为三页使用相同的自定义节点模板,并将不同的内容放入我确定的字段中。 辅助菜单栏应在所有三页上相同,可能包含这些菜...

0  将内容类型导出为像结构的形式?  ( Export content type to a form like structure ) 
所以,我只是懒惰。我必须为用户制作新的自定义表单来输入数据。表单与内容类型完全匹配(除了生成服务器端的某些内容之外)。有没有办法将内容类型表单导出到表单函数中? 如果不是它看起来我可能有趣的发展。 谢谢, nate ...

0  使用隐藏($提交);在TPL?  ( Using hidesubmitted in a tpl ) 
现在我在TPL文件中工作,在一个特定的地方,我有 <?php print render($submitted); ?> ,这工作得很好。但是,后来我做 <?php print render($content); ?> 它将通过链接呈现提交。通常我只是: <?php hide($content["comment...

0  防止用户创建重复节点标题  ( Prevent user creating a duplicate node title ) 
如何防止用户为内容类型创建重复节点标题? 我已经尝试唯一性模块( https://drupal.org/project/unqueness )但是它只列出重复内容标题,但在用户保存新内容时才会返回任何错误消息。任何建议模块或代码? :) ...

1  D7,排序/分组(与实体参考字段的视图关系)  ( D7 sorting grouping views relationships with entity reference fields ) 
我正在渲染名为"cadet" 的内容类型中数千个内容节点的名称标签。 这些"Cadet" 节点中的每一个都指定即将到来的事件的单个"与会者" 。 情况: 一些与会者还需要名称标签,为他们正在参加"与他们" 的"朋友" 打印出来。" 没有问题 - 这些"朋友" 显然需要自己的节点与相同的字段获取自己的名称...

2  如何使用节点参考参考参考说明面板  ( How to make panels with a node reference argument ) 
我有一个多用户网站。当新用户寄存器时,为他/她自动创建几个节点(例如画廊节点等)。 每个用户都有一个面板页面,显示其所有者的配置文件。面板由各种视图窗格组成。 在其他社区网站上非常喜欢,对个人资料页面的访问者将能够留下评论(文本+图片。) 到此效果,并希望这是正确的方法,我正在尝试在小组中包含评论表格。评论表单附加...

0  一次生成内容类型  ( Generating content type at once ) 
定义字段非常耗时,在创建内容类型时设置其类型和验证。如果字段数量超过数量(比如说,10),这是一个噩梦。 是否有任何方法可以在页面上定义所有字段,它们的类型,结构,验证,并立即生成整个内容类型? ...

0  将列表字段中的所有可能的项目输出为视图?  ( Output all possible items in a list field as a view ) 
是否可以将列表字段类型(内容类型)的所有可能的选项输出为视图? ...

0  我可以使用视图选择节点吗?  ( Can i use a view to select nodes ) 
我正在尝试找到一种方法来让用户从视图结果中选择节点,然后从所选节点(例如节点ID)中获取信息以用于我的模块。这可能是以一种形式完成的。 更广泛地,我正在尝试完成的是向用户提供标记为一定术语x标记的节点列表,让它们从该列表中选择任意数量的节点,然后将我的模块应用另一个术语y到所选节点。我可以处理最后一部分,但我正在努力...

4  您如何主题编辑页面?  ( How do you theme the node edit page ) 
您在Drupal 7中将节点编辑页面主题使用哪些文件名? ...

1  如何显示订阅当前节点的分类条款的用户列表  ( How to show a list of users subscribed to the current nodes taxonomy terms ) 
我已经令人沮丧了这一段时间了一段时间,虽然我似乎接近了,到目前为止,现在令人敬畏地踢进去。 这是我想要的: 我有许多文章(节点),每个文章都有自己的分类术语列表 我有很多用户,每个用户都有一个分类术语中定义的兴趣清单 我想生成订阅-Current-节点的分类术语的用户列表 我尝试了许多不同的方法,往往有我接近的感觉,...

6  以编程方式设置节点类型选项的正确方法是什么?  ( What is the correct way to programatically set node type options ) 
我昨天学到了创建节点类型的正确方法是通过在.module文件中实现 $price24 。在我通过 $price25 中编制了在.install文件中的节点类型之前,如下所示: $price26 我还在.install文件中设置了节点类型选项,如下所示: $price27 是以编程设置节点类型选项的正确...

0  在管理内容类型的字段时,无法共享“列表(整数)”字段?  ( When managing fields for a content type fields of type list integer cant b ) 
在"添加现有字段" 下拉下,并非所有字段都可用于重用。具体而言,我想重用"列表(整数)" 字段,因为我将以完全相同的设置(仅为不同的标签和机器名称)将其中300个添加到我的内容类型中。手动下车将带我超过八个小时,因为大约需要1.5分钟来添加字段并配置它的设置。是否可以重用类型"列表(整数)" 字段? 谢谢!! p...

2  创建父节点时创建子节点  ( Creating child nodes when creating parent ) 
我在根据父节点字段值创建父节点时,我正在尝试在hook_submit中以编程方式在SCOP_SUBMIT中创建父节点。这是这个想法。 父节点:field_stages(无限计数)。我想在添加新的父节点时创建新的"舞台" 节点,并在父节点中保存对这些子节点的引用,尽管引用不应在添加/编辑表单和节点视图中可编辑和可见。如...




© 2021 it.wenda123.org All Rights Reserved. 问答之家 版权所有


Licensed under cc by-sa 3.0 with attribution required.