首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在规则模块中检查真值

在规则模块中检查真值
EN

Drupal用户
提问于 2011-07-25 13:38:37
回答 2查看 2.5K关注 0票数 4

对于"Page“节点,我希望添加一个仅对非管理员用户的用户编辑的节点起作用的事件。

我使用以下代码,它不起作用:

代码语言:javascript
复制
<?php [node:user-id] != 1 ? TRUE : FALSE; ?> 

无论我改变了什么,对于管理人员来说,这个活动都是被召集起来的。我检查了所有的排列和语法组合(包括返回),但似乎忽略了“检查真值”。

EN

回答 2

Drupal用户

回答已采纳

发布于 2011-07-25 14:35:06

您使用的代码没有输出任何值;如果需要执行与条件相关的操作,则需要输出PHP代码1;如果不需要执行与条件相关的操作,则输出0。

正确的条件如下:

代码语言:javascript
复制
<?php echo ([node:author-uid] != 1); ?>

或者,您也可以使用以下方法:

代码语言:javascript
复制
<?php echo ($author->uid != 1); ?>
  • 验证您使用的令牌是正确的;我在Drupal 6中看到的令牌是节点:作者-uid。
  • 运算符!=已经返回一个布尔值;不需要像您编写的代码那样将其转换为布尔值。“真理值”字段也接受1和0作为值;不需要将值转换为布尔值。

为"PHP评估“报告的描述如下:

<?php ?>分隔符中的PHP代码将被其输出计算和替换。<? echo 1+1; ?>将被2取代。

要注意ID等于1的用户是特定用户,Drupal总是给予从任何模块定义的任何权限;这是唯一以这种特定方式处理的用户帐户。管理员用户的用户ID并不总是等于1;如果您正在检查用户ID以验证用户是否是管理用户,那么您就错了。在Drupal中,通常检查用户对user_access()的权限。

票数 4
EN

Drupal用户

发布于 2012-02-02 19:29:44

除了kiamlaluno描述适当语法的答案之外,另一个重要的线索是您必须打开PHP过滤器模块。否则,规则会将输入解释为纯文本,在PHP中几乎总是计算为TRUE。打开PHP过滤器,使用另一个答案中的语法,您应该都设置好了。

票数 1
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/7767

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档