我需要能够添加页面,然后通过不同类型的用户限制这些页面:Anonymous,Partial和Full。
注册时,用户可以输入所有详细信息以获得完整注册或仅输入其一半的详细信息,例如,无需输入地址,电话等以获得部分注册类型。
然后在添加页面时,我需要能够选择匿名,部分和/或完全访问它。如果他们不这样做,那么它仍然需要将该页面的摘要显示为预告片,但在他们注册并登录之前他们将无法访问主要内容。
我已经安装了Simple Access插件,它允许我创建组但不确定如何实现注册表单,这样如果用户只输入必填字段,他们将成为部分用户,否则他们将成为完整用户。有什么建议?
答案 0 :(得分:3)
您可以使用Rules模块。创建在新用户创建时运行的触发规则,然后检查字段,最后为用户分配相应的角色。
答案 1 :(得分:2)
我最终使用一个钩子来实现用户是普通的授权用户还是完整的用户。请有人请检查下面的钩子是否正确?我是Drupal的新手,因此在添加/删除角色时不确定是否有任何其他表受到影响。
function module_user_update(&$edit, $account, $category) {
$dob = field_get_items('user', $account, 'field_dob');
$address1 = field_get_items('user', $account, 'field_address1');
$address2 = field_get_items('user', $account, 'field_address2');
$address3 = field_get_items('user', $account, 'field_address3');
$city = field_get_items('user', $account, 'field_city');
$postcode = field_get_items('user', $account, 'field_postcode');
$county = field_get_items('user', $account, 'field_county');
$telephone = field_get_items('user', $account, 'field_telephone');
if(empty($dob[0]['value']) || empty($address1[0]['value']) || empty($address2[0]['value']) || empty($address3[0]['value']) || empty($city[0]['value']) || empty($postcode[0]['value']) || empty($county[0][$
{
$userid = $account->uid;
//remove full role from db so user is only an authorised user
db_query("DELETE FROM {users_roles} WHERE uid = '".$userid."' && rid = '5'");
} else {
$userid = $account->uid;
//delete full role if it already exists so it doesnt go in twice
db_query("DELETE FROM {users_roles} WHERE uid = '".$userid."' && rid = '5'");
//insert full role
db_query("INSERT INTO {users_roles} (rid, uid) VALUES ('5',$userid)");
}
}
答案 2 :(得分:1)
你应该好好研究一些刚开始的Drupal教程。角色,规则,触发器和CCK(以及content_permissions) - 这些是您将要学习的模块/概念。
他们会用你需要的东西武装你。 CCK将允许您创建特定的内容类型,content_permissions(包含在CCK中)将允许您根据用户的角色设置可见性,角色将允许您创建新的用户组,并且正如@ Laxman13所说,规则将允许您设置规则以执行需要完成的操作(即将此用户添加到X角色),触发器将为您提供执行此操作的功能。