Drupal - 使用PHP代码隐藏块

时间:2010-11-06 10:46:44

标签: drupal

我已经安装了模块 - http://drupal.org/project/formblock(允许在块中显示节点创建表单)

我已针对特定内容类型启用它,然后公开该块,以显示何时查看“有机组”节点。

我想要做的是,如果当前登录的用户不是正在查看的“有机组”节点的作者,则隐藏该块。 i.o.w我只希望有机组作者看到那个块。

提前感谢:)

1 个答案:

答案 0 :(得分:4)

您可以使用“PHP block visibility settings”来实现您的目标。使用PHP,您可以查询数据库,并检查登录用户是否是在有机组中创建节点的用户。

我已经调整了drupal.org上的an example(您可能需要进一步自定义) -

<?php
// check og module exists
if (module_exists('og')){
    // check user is logged in
    global $user;
    if ($user->uid) {
        // check we've got a group, rights to view the group,
        // and of type "group_type" - change this to whichever group you want to restrict the block to
        // or remove the condition entirely
        if (($group = og_get_group_context()) && node_access('view', $group) && ($group->type == 'group_type') ) {
            // check current user is a team admin as they should get access
            if (og_is_node_admin($group)) {
                return TRUE;
            }
            // check to see if the current user is the node author
            if (arg(0) == 'node' && is_numeric(arg(1))) {
                $nid = arg(1);
                $node = node_load(array('nid' => $nid));
                if ($node->uid == $user->uid) {
                    return TRUE;
                }
            }
        }
    }
}
return FALSE;
?>