【问题标题】:Show stuff only if profile owner does not belong to role X (in Drupal 7)仅当配置文件所有者不属于角色 X 时才显示内容(在 Drupal 7 中)
【发布时间】:2013-01-14 04:45:37
【问题描述】:

我有一个 Drupal 7 站点,我想根据配置文件用户(不是登录用户)的角色在配置文件页面内打印出一些字段内容。 我需要仅当个人资料所有者没有角色时才显示特定字段作者:

<?php
  if (!in_array('autor', array_values($user->roles))) {
print drupal_render(field_view_field('profile2', $profile['main'], 'field_nombrecompleto1', 'value'));
  }
  else {print "yada yada";}

注意:有问题的配置文件字段是 rofile2 字段,而不是核心配置文件字段。

该代码有什么问题?因为它会在任何情况下打印出相关字段,无论配置文件所有者的角色如何。

我已经尝试过其他代码,在这种情况下,该字段无论如何都不会打印出来:

<?php
if (is_array($user->roles) &&
    in_array('authenticated user', $user->roles) &&
    !in_array('autor', $user->roles)) {
    print drupal_render(field_view_field('profile2', $profile['main'], 'field_nombrecompleto1', 'value'));
}
?>

【问题讨论】:

  • 您是否尝试过 print_r($user->roles),它是否包含目标用户角色?
  • 但是我不想打印用户角色,而是根据配置文件的用户角色显示信息。
  • 这是一个调试命令。

标签: php arrays drupal


【解决方案1】:

这是在 Drupal 7 中修改表单以编辑您的个人资料时如何完成的:

function MYMODULE_form_profile2_edit_main_form_alter(&$form, $form_state) {
  global $user;
  $roles = $user->roles;
  if(!in_array('authenticated user', $roles)) {
    $form['profile_main']['MY_FIELD_ID']['#access'] = FALSE;
  }
}

【讨论】:

    猜你喜欢
    • 2021-12-28
    • 2023-03-04
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-11
    相关资源
    最近更新 更多